diff options
| author | zirkonya <zirkonya@iridium.lan> | 2026-09-01 09:51:18 +0200 |
|---|---|---|
| committer | zirkonya <zirkonya@iridium.lan> | 2026-09-01 09:51:18 +0200 |
| commit | be62f065a62048b798e8bb2b8e3699bdd5b6d517 (patch) | |
| tree | 8b3f4b05838b5fa34c3ae24e35004343baadf2af /src/transport/sender.rs | |
| parent | fdc02f07cbd1994c1efb057f24a37a96faaa51fa (diff) | |
add proc macros ; benchmark ; example
Diffstat (limited to 'src/transport/sender.rs')
| -rw-r--r-- | src/transport/sender.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/transport/sender.rs b/src/transport/sender.rs index 804914f..3c83c6e 100644 --- a/src/transport/sender.rs +++ b/src/transport/sender.rs @@ -3,3 +3,15 @@ use crate::{codec::Codec, context::Context, transport::Result}; pub trait PacketSender<Data>: Send + Sync { fn send<P: Codec<Data>>(&self, packet: P, ctx: &Context<Data>) -> Result<()>; } + +pub trait PacketSenderBuf<Data>: Send + Sync { + fn send_buf(&self, buf: &[u8]) -> Result<()>; +} + +impl<Data, S: PacketSenderBuf<Data>> PacketSender<Data> for S { + fn send<P: Codec<Data>>(&self, packet: P, ctx: &Context<Data>) -> Result<()> { + let mut buf = Vec::new(); + packet.encode(&mut buf, ctx)?; + self.send_buf(&buf) + } +}
\ No newline at end of file |
