server list working
This commit is contained in:
30
src/handshake.rs
Normal file
30
src/handshake.rs
Normal file
@ -0,0 +1,30 @@
|
||||
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
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user