#![deny(rustdoc::broken_intra_doc_links)]
#![deny(missing_docs)]
#![cfg_attr(not(doctest), doc = include_str!("../README.md"))]
use std::fmt::Debug;
use crate::packet_length_serializer::PacketLengthSerializer;
use crate::protocol::Protocol;
use crate::serializer::Serializer;
#[cfg(feature = "client")]
pub mod client;
pub mod connection;
pub mod packet_length_serializer;
pub mod protocol;
pub mod protocols;
pub mod serializer;
pub mod serializers;
#[cfg(feature = "server")]
pub mod server;
#[derive(bevy::ecs::schedule::SystemLabel, Clone, Hash, Debug, PartialEq, Eq)]
#[allow(missing_docs)]
pub enum SystemLabels {
ClientPacketReceive,
ClientConnectionEstablish,
ClientConnectionRemove,
ClientConnectionRequest,
ServerConnectionAdd,
ServerAcceptNewConnections,
ServerAcceptNewPackets,
ServerRemoveConnections,
SetMaxPacketSize,
}
pub trait ServerConfig: Send + Sync + 'static {
type ClientPacket: Send + Sync + Debug + 'static;
type ServerPacket: Send + Sync + Debug + 'static;
type Protocol: Protocol;
type Serializer: Serializer<Self::ClientPacket, Self::ServerPacket> + Default;
type LengthSerializer: PacketLengthSerializer + Default;
}
pub trait ClientConfig: Send + Sync + 'static {
type ClientPacket: Send + Sync + Debug + 'static;
type ServerPacket: Send + Sync + Debug + 'static;
type Protocol: Protocol;
type Serializer: Serializer<Self::ServerPacket, Self::ClientPacket> + Default;
type LengthSerializer: PacketLengthSerializer + Default;
}