raknet-rust 0.2.0

Asynchronous, high-performance RakNet transport library for Rust.
Documentation
use bitflags::bitflags;

pub type Magic = [u8; 16];

pub const RAKNET_PROTOCOL_VERSION: u8 = 11;

pub const MINIMUM_MTU_SIZE: u16 = 576;
pub const MAXIMUM_MTU_SIZE: u16 = 1400;
pub const MTU_PROBE_ORDER: &[u16] = &[1200, MAXIMUM_MTU_SIZE, MINIMUM_MTU_SIZE];

pub const MAX_ACK_SEQUENCES: u16 = 8192;
pub const MAX_SPLIT_PARTS: u32 = 8192;
pub const SPLIT_REASSEMBLY_TTL_MS: u64 = 30_000;
pub const MAX_INFLIGHT_SPLIT_COMPOUNDS_PER_PEER: usize = 256;

pub const DEFAULT_UNCONNECTED_MAGIC: Magic = [
    0x00, 0xFF, 0xFF, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFD, 0xFD, 0xFD, 0xFD, 0x12, 0x34, 0x56, 0x78,
];

pub const RAKNET_DATAGRAM_HEADER_SIZE: usize = 4;

pub const FRAME_FLAG_SPLIT: u8 = 0b0001_0000;
pub const FRAME_FLAG_NEEDS_BAS: u8 = 0b0000_0100;

pub const ID_UNCONNECTED_PING: u8 = 0x01;
pub const ID_UNCONNECTED_PING_OPEN_CONNECTIONS: u8 = 0x02;
pub const ID_UNCONNECTED_PONG: u8 = 0x1C;
pub const ID_OPEN_CONNECTION_REQUEST_1: u8 = 0x05;
pub const ID_OPEN_CONNECTION_REPLY_1: u8 = 0x06;
pub const ID_OPEN_CONNECTION_REQUEST_2: u8 = 0x07;
pub const ID_OPEN_CONNECTION_REPLY_2: u8 = 0x08;
pub const ID_CONNECTION_REQUEST_FAILED: u8 = 0x11;
pub const ID_ALREADY_CONNECTED: u8 = 0x12;
pub const ID_NO_FREE_INCOMING_CONNECTIONS: u8 = 0x14;
pub const ID_CONNECTION_BANNED: u8 = 0x17;
pub const ID_INCOMPATIBLE_PROTOCOL_VERSION: u8 = 0x19;
pub const ID_IP_RECENTLY_CONNECTED: u8 = 0x1A;

bitflags! {
    #[derive(Debug, Clone, Copy, PartialEq, Eq)]
    #[repr(transparent)]
    pub struct DatagramFlags: u8 {
        const VALID            = 0b1000_0000;
        const ACK              = 0b0100_0000;
        const NACK             = 0b0010_0000;
        const PACKET_PAIR      = 0b0001_0000;
        const CONTINUOUS_SEND  = 0b0000_1000;
        const HAS_B_AND_AS     = 0b0000_0100;
    }
}