use super::{error::NaiaClientSocketError, server_addr::ServerAddr};
pub trait PacketSender: PacketSenderClone + Send + Sync {
fn send(&self, payload: &[u8]) -> Result<(), NaiaClientSocketError>;
fn server_addr(&self) -> ServerAddr;
fn connected(&self) -> bool;
fn disconnect(&mut self);
}
pub trait PacketSenderClone {
fn clone_box(&self) -> Box<dyn PacketSender>;
}
impl<T: 'static + PacketSender + Clone> PacketSenderClone for T {
fn clone_box(&self) -> Box<dyn PacketSender> {
Box::new(self.clone())
}
}
impl Clone for Box<dyn PacketSender> {
fn clone(&self) -> Box<dyn PacketSender> {
PacketSenderClone::clone_box(self.as_ref())
}
}