Skip to main content

raknet_rust/handshake/
reject.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 ConnectionRequestFailed {
9    pub server_guid: u64,
10    pub magic: Magic,
11}
12
13#[derive(Debug, Clone)]
14pub struct AlreadyConnected {
15    pub server_guid: u64,
16    pub magic: Magic,
17}
18
19#[derive(Debug, Clone)]
20pub struct NoFreeIncomingConnections {
21    pub server_guid: u64,
22    pub magic: Magic,
23}
24
25#[derive(Debug, Clone)]
26pub struct ConnectionBanned {
27    pub server_guid: u64,
28    pub magic: Magic,
29}
30
31#[derive(Debug, Clone)]
32pub struct IpRecentlyConnected {
33    pub server_guid: u64,
34    pub magic: Magic,
35}
36
37pub(super) fn decode_reject_packet(
38    src: &mut impl Buf,
39    expected_magic: Magic,
40) -> Result<(Magic, u64), DecodeError> {
41    let magic = super::validate_magic(Magic::decode_raknet(src)?, expected_magic)?;
42    let server_guid = u64::decode_raknet(src)?;
43    Ok((magic, server_guid))
44}