use std::fmt::Debug;
use std::net::SocketAddr;
use super::NetcodeTransportError;
pub trait ServerSocket: Debug + Send + Sync + 'static {
fn is_encrypted(&self) -> bool;
fn is_reliable(&self) -> bool;
fn addr(&self) -> std::io::Result<SocketAddr>;
fn is_closed(&mut self) -> bool;
fn close(&mut self);
fn connection_denied(&mut self, addr: SocketAddr);
fn connection_accepted(&mut self, client_id: u64, addr: SocketAddr);
fn disconnect(&mut self, addr: SocketAddr);
fn preupdate(&mut self);
fn try_recv(&mut self, buffer: &mut [u8]) -> std::io::Result<(usize, SocketAddr)>;
fn postupdate(&mut self);
fn send(&mut self, addr: SocketAddr, packet: &[u8]) -> Result<(), NetcodeTransportError>;
}
pub trait ClientSocket: Debug + Send + Sync + 'static {
fn is_encrypted(&self) -> bool;
fn is_reliable(&self) -> bool;
fn addr(&self) -> std::io::Result<SocketAddr>;
fn is_closed(&mut self) -> bool;
fn close(&mut self);
fn preupdate(&mut self);
fn try_recv(&mut self, buffer: &mut [u8]) -> std::io::Result<(usize, SocketAddr)>;
fn postupdate(&mut self);
fn send(&mut self, addr: SocketAddr, packet: &[u8]) -> Result<(), NetcodeTransportError>;
}