karyon_net/codec/
mod.rs

1mod buffer;
2mod bytes_codec;
3mod length_codec;
4#[cfg(feature = "ws")]
5mod websocket;
6
7pub use buffer::{Buffer, ByteBuffer};
8pub use bytes_codec::BytesCodec;
9pub use length_codec::LengthCodec;
10
11#[cfg(feature = "ws")]
12pub use websocket::{WebSocketCodec, WebSocketDecoder, WebSocketEncoder};
13
14pub trait Codec:
15    Decoder<DeMessage = Self::Message, DeError = Self::Error>
16    + Encoder<EnMessage = Self::Message, EnError = Self::Error>
17    + Send
18    + Sync
19    + Unpin
20{
21    type Message: Send + Sync;
22    type Error;
23}
24
25pub trait Encoder {
26    type EnMessage;
27    type EnError: From<std::io::Error>;
28    fn encode(
29        &self,
30        src: &Self::EnMessage,
31        dst: &mut ByteBuffer,
32    ) -> std::result::Result<usize, Self::EnError>;
33}
34
35pub trait Decoder {
36    type DeMessage;
37    type DeError: From<std::io::Error>;
38    fn decode(
39        &self,
40        src: &mut ByteBuffer,
41    ) -> std::result::Result<Option<(usize, Self::DeMessage)>, Self::DeError>;
42}