Skip to main content

raknet_rust/handshake/
incompatible.rs

1use bytes::Buf;
2
3use crate::error::DecodeError;
4use crate::protocol::codec::RaknetCodec;
5use crate::protocol::constants::Magic;
6
7#[derive(Debug, Clone)]
8pub struct IncompatibleProtocolVersion {
9    pub protocol_version: u8,
10    pub server_guid: u64,
11    pub magic: Magic,
12}
13
14pub(super) fn decode_incompatible(
15    src: &mut impl Buf,
16    expected_magic: Magic,
17) -> Result<IncompatibleProtocolVersion, DecodeError> {
18    let protocol_version = u8::decode_raknet(src)?;
19    let magic = super::validate_magic(Magic::decode_raknet(src)?, expected_magic)?;
20    let server_guid = u64::decode_raknet(src)?;
21
22    Ok(IncompatibleProtocolVersion {
23        protocol_version,
24        server_guid,
25        magic,
26    })
27}