raknet_rust/handshake/
incompatible.rs1use 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}