Transport
The Transport
trait is the trait that is used to send and receive raw data on the network.
It is very general:
pub trait PacketSender: Send + Sync {
/// Send data on the socket to the remote address
fn send(&mut self, payload: &[u8], address: &SocketAddr) -> Result<()>;
}
pub trait PacketReceiver: Send + Sync {
/// Receive a packet from the socket. Returns the data read and the origin.
///
/// Returns Ok(None) if no data is available
fn recv(&mut self) -> Result<Option<(&mut [u8], SocketAddr)>>;
}
The trait currently has 4 implementations:
- UDP sockets
- WebTransport (using QUIC)
- WebSocket
- crossbeam-channels: used for internal testing