From bf9b81e669f4ce98c8d58df5d776ae90726d7ec2 Mon Sep 17 00:00:00 2001 From: zirkonya Date: Sat, 29 Aug 2026 22:11:23 +0200 Subject: Add transport layer --- src/transport.rs | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/transport.rs (limited to 'src/transport.rs') diff --git a/src/transport.rs b/src/transport.rs new file mode 100644 index 0000000..a5cf55d --- /dev/null +++ b/src/transport.rs @@ -0,0 +1,39 @@ +use crate::transport::{ + connection::Connection, listener::Listener, receiver::PacketReceiver, sender::PacketSender, +}; + +#[cfg(feature = "tcp")] +pub mod tcp; +#[cfg(feature = "udp")] +pub mod udp; + +pub mod connection; +pub mod error; +pub mod listener; +pub mod receiver; +pub mod sender; + +pub use crate::transport::error::TransportError; + +pub type Result = std::result::Result; + +pub trait Transport: Send + Sync +where + Uid: PartialEq, +{ + type Data; + type Addr; + type Sender: PacketSender + Clone; + type Receiver: PacketReceiver; + type Listener: Listener; + fn connect(&self, addr: Self::Addr) -> Result>; + fn listen(&self, addr: Self::Addr) -> Result; +} + +/// Convenience alias for the [`Connection`] produced by a [`Transport`]. +pub type ConnectionOf = Connection< + Uid, + >::Data, + >::Sender, + >::Receiver, +>; -- cgit v1.2.3