enet_proto/enc/
encoder.rs

1use bytes::{BufMut, BytesMut};
2use thiserror::Error;
3
4use crate::RequestEnvelope;
5
6use super::DELIMETER;
7
8#[derive(Default)]
9pub struct EnetEncoder;
10
11impl EnetEncoder {
12  #[inline]
13  pub const fn new() -> Self {
14    Self
15  }
16
17  pub fn encode(
18    &mut self,
19    item: &RequestEnvelope,
20    buf: &mut BytesMut,
21  ) -> Result<(), EnetEncoderError> {
22    serde_json::to_writer(buf.writer(), item)?;
23    buf.put_slice(DELIMETER.as_bytes());
24
25    Ok(())
26  }
27}
28
29#[non_exhaustive]
30#[derive(Debug, Error)]
31pub enum EnetEncoderError {
32  #[error("Failed to encode eNet message.")]
33  JsonError(#[from] serde_json::Error),
34}