naia-client 0.24.0

Provides a cross-platform client that can send/receive messages to/from a server, and has a pool of in-scope entities/components that is synced with the server.
Documentation
mod handshake_time_manager;

use naia_shared::{BitReader, BitWriter, IdentityToken, OutgoingPacket};

use crate::connection::time_manager::TimeManager;

cfg_if! {
    if #[cfg(feature = "transport_udp")] {
        mod advanced_handshaker;
        pub use advanced_handshaker::HandshakeManager;
    } else {
        mod simple_handshaker;
        pub use simple_handshaker::HandshakeManager;
    }
}

pub enum HandshakeResult {
    Connected(TimeManager),
}

pub trait Handshaker: Send + Sync {
    fn set_identity_token(&mut self, identity_token: IdentityToken);
    // fn is_connected(&self) -> bool;
    fn send(&mut self) -> Option<OutgoingPacket>;
    fn recv(&mut self, reader: &mut BitReader) -> Option<HandshakeResult>;
    fn write_disconnect(&self) -> BitWriter;
}