Files
dockermcmgr/src/handshake.rs
2026-05-06 02:49:03 +02:00

31 lines
869 B
Rust

use std::collections::VecDeque;
use crate::varint::varint_read;
pub struct Handshake {
pub protocol_version: i32,
pub server_address: String,
pub server_port: u16,
pub intent: i32
}
impl Handshake {
pub fn parse(mut packet: &mut VecDeque<u8>) -> Result<Self, String> {
let protocol_version = varint_read(&mut packet)?;
let str_len = varint_read(&mut packet)? as usize;
let server_address : String = String::from_utf8(packet.drain(..str_len).collect::<Vec<u8>>()).expect("Invalid UTF-8");
let bytes: [u8; 2] = [packet[0], packet[1]];
let server_port : u16 = u16::from_be_bytes(bytes);
packet.drain(..2);
let intent : i32 = varint_read(&mut packet)?;
Ok(Self {
protocol_version,
server_address,
server_port,
intent
})
}
}