#![deny(rustdoc::broken_intra_doc_links)]
#![cfg_attr(not(debug_assertions), deny(missing_docs))]
#![cfg_attr(not(doctest), doc = include_str!("../README.md"))]
use std::{error::Error, fmt::Debug};
use crate::packet_length_serializer::PacketLengthSerializer;
use crate::protocol::Protocol;
use bevy::prelude::SystemSet;
use serializer::SerializerAdapter;
#[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;
#[cfg(test)]
mod tests;
#[cfg(test)]
mod tests_mut_serializer;
#[derive(Clone, Debug, Eq, Hash, PartialEq, SystemSet)]
#[allow(missing_docs)]
pub enum SystemSets {
ClientPacketReceive,
ClientConnectionEstablish,
ClientConnectionRemove,
ClientConnectionRequest,
ServerConnectionAdd,
ServerAcceptNewConnections,
ServerAcceptNewPackets,
ServerRemoveConnections,
SetMaxPacketSize,
MaxPacketSizeWarning,
}
pub trait ServerConfig: Send + Sync + 'static {
type ClientPacket: Send + Sync + Debug + 'static;
type ServerPacket: Send + Sync + Debug + 'static;
type Protocol: Protocol;
type EncodeError: Error + Send + Sync;
type DecodeError: Error + Send + Sync;
fn build_serializer() -> SerializerAdapter<
Self::ClientPacket,
Self::ServerPacket,
Self::EncodeError,
Self::DecodeError,
>;
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 EncodeError: Error + Send + Sync;
type DecodeError: Error + Send + Sync;
fn build_serializer() -> SerializerAdapter<
Self::ServerPacket,
Self::ClientPacket,
Self::EncodeError,
Self::DecodeError,
>;
type LengthSerializer: PacketLengthSerializer + Default;
}