blob: 16afb2281f6e388ce2076147e6153029c937800f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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)
}
}
|