diff options
| author | zirkonya <zirkonya@iridium.lan> | 2026-08-29 22:11:23 +0200 |
|---|---|---|
| committer | zirkonya <zirkonya@iridium.lan> | 2026-08-29 22:11:23 +0200 |
| commit | bf9b81e669f4ce98c8d58df5d776ae90726d7ec2 (patch) | |
| tree | e0d5bdbd8a3423f1303577ddebbfa34696d336bb /src/event | |
| parent | bb41e396aca01fee9f81785681fac0a79d0fd9d8 (diff) | |
Add transport layer
Diffstat (limited to 'src/event')
| -rw-r--r-- | src/event/connection.rs | 24 | ||||
| -rw-r--r-- | src/event/disconnect.rs | 4 | ||||
| -rw-r--r-- | src/event/handler.rs | 6 | ||||
| -rw-r--r-- | src/event/listener.rs | 5 | ||||
| -rw-r--r-- | src/event/received.rs | 2 | ||||
| -rw-r--r-- | src/event/sent.rs | 2 |
6 files changed, 25 insertions, 18 deletions
diff --git a/src/event/connection.rs b/src/event/connection.rs index 99813fd..4af2164 100644 --- a/src/event/connection.rs +++ b/src/event/connection.rs @@ -1,13 +1,19 @@ -use std::net::SocketAddr; - use getset::Getters; -// TODO : identification -// TODO : reason type #[derive(Getters)] -pub struct ConnectionEvent { - #[getset(get = "pub")] - peer_addr: SocketAddr, - #[getset(get = "pub")] - local_addr: SocketAddr, +pub struct ConnectionEvent<Uid> +where + Uid: PartialEq, +{ + #[get = "pub"] + client_uid: Uid, +} + +impl<Uid> ConnectionEvent<Uid> +where + Uid: PartialEq, +{ + pub fn new(uid: Uid) -> Self { + Self { client_uid: uid } + } } diff --git a/src/event/disconnect.rs b/src/event/disconnect.rs index 6511027..2183180 100644 --- a/src/event/disconnect.rs +++ b/src/event/disconnect.rs @@ -18,8 +18,8 @@ pub struct DisconnectEvent<Uid> where Uid: PartialEq, { - #[getset(get = "pub")] + #[get = "pub"] connection_id: Uid, - #[getset(get = "pub")] + #[get = "pub"] reason: DisconnectReason, } diff --git a/src/event/handler.rs b/src/event/handler.rs index 3f9827e..f801d12 100644 --- a/src/event/handler.rs +++ b/src/event/handler.rs @@ -1,7 +1,5 @@ -// TODO : dispatch event through all listener -// TODO : maybe compile listener into one ? - use crate::{ + codec::Codec, context::Context, event::{ Event, @@ -12,6 +10,7 @@ use crate::{ pub struct EventHandler<Packet, Data = (), Uid = u64> where Uid: PartialEq, + Packet: Codec<Data>, { listeners: Vec<Box<dyn Listener<Packet, Data, Uid>>>, } @@ -19,6 +18,7 @@ where impl<Packet, Data, Uid> EventHandler<Packet, Data, Uid> where Uid: PartialEq + Clone, + Packet: Codec<Data>, { pub fn register<L: Listener<Packet, Data, Uid> + 'static>(&mut self, listener: L) { self.listeners.push(Box::new(listener)); diff --git a/src/event/listener.rs b/src/event/listener.rs index 81f4b57..8ff6719 100644 --- a/src/event/listener.rs +++ b/src/event/listener.rs @@ -1,9 +1,9 @@ use crate::{ + codec::Codec, context::Context, event::{ConnectionEvent, DisconnectEvent, PacketReceivedEvent, PacketSentEvent}, }; -// TODO : Listener ; interface to perform action when event occured // TODO async trait for async runtime pub enum ListenerResult { @@ -21,8 +21,9 @@ pub enum ListenerResult { pub trait Listener<Packet, Data = (), Uid = u64> where Uid: PartialEq, + Packet: Codec<Data>, { - fn on_connection(&self, event: &ConnectionEvent, ctx: &Context<Data>) -> ListenerResult { + fn on_connection(&self, event: &ConnectionEvent<Uid>, ctx: &Context<Data>) -> ListenerResult { let _ = (event, ctx); ListenerResult::Continue } diff --git a/src/event/received.rs b/src/event/received.rs index 0ef6d0e..46e1f63 100644 --- a/src/event/received.rs +++ b/src/event/received.rs @@ -2,6 +2,6 @@ use getset::Getters; #[derive(Getters)] pub struct PacketReceivedEvent<Packet> { - #[getset(get = "pub")] + #[get = "pub"] packet: Packet, } diff --git a/src/event/sent.rs b/src/event/sent.rs index 5278842..7e88a7f 100644 --- a/src/event/sent.rs +++ b/src/event/sent.rs @@ -2,6 +2,6 @@ use getset::Getters; #[derive(Getters)] pub struct PacketSentEvent<Packet> { - #[getset(get = "pub")] + #[get = "pub"] packet: Packet, } |
