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/backend.rs | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'src/backend.rs') diff --git a/src/backend.rs b/src/backend.rs index 8b13789..fce8a26 100644 --- a/src/backend.rs +++ b/src/backend.rs @@ -1 +1,48 @@ +use crate::{ + codec::Codec, + context::Context, + event::handler::EventHandler, + transport::{ConnectionOf, Result, Transport, receiver::PacketReceiver, sender::PacketSender}, +}; +// TODO : check backend ! maybe better implementations +// TODO : maybe add default functions implementation +// TODO : not sure about send/recv functions + +pub trait Backend +where + Uid: PartialEq, + Data: Send + Sync + 'static, + Packet: Codec + Send + Sync + 'static, + Self::Transport: Transport, + >::Sender: PacketSender + Clone, + >::Receiver: PacketReceiver, +{ + type Transport: Transport; + + fn transport(&self) -> &Self::Transport; + fn event_handler(&self) -> &EventHandler; + fn make_context(&self) -> Context; + + fn recv( + &self, + conn: &ConnectionOf, + ctx: &Context, + ) -> Result<(Uid, Packet)>; + + fn send( + &self, + conn: &ConnectionOf, + packet: &Packet, + ctx: &Context, + ) -> Result<()>; + + fn connect( + &self, + addr: >::Addr, + ) -> Result>; + + fn serve(&self, addr: >::Addr, on_accept: A) -> Result<()> + where + A: Fn(&Self, &ConnectionOf, &Context) + Send + Sync + 'static; +} -- cgit v1.2.3