wrpc_transport/frame/
mod.rs

1//! wRPC transport stream framing
2
3use std::sync::Arc;
4
5use bytes::Bytes;
6
7mod codec;
8mod conn;
9mod oneshot;
10
11#[cfg(any(target_family = "wasm", feature = "net"))]
12pub mod tcp;
13
14#[cfg(all(unix, feature = "net"))]
15pub mod unix;
16
17pub use codec::*;
18pub use conn::*;
19pub use oneshot::*;
20
21/// Framing protocol version
22pub const PROTOCOL: u8 = 0;
23
24/// Owned wRPC frame
25#[derive(Clone, Debug, Eq, PartialEq)]
26pub struct Frame {
27    /// Frame path
28    pub path: Arc<[usize]>,
29    /// Frame data
30    pub data: Bytes,
31}
32
33/// wRPC frame reference
34#[derive(Clone, Debug, Eq, PartialEq)]
35pub struct FrameRef<'a> {
36    /// Frame path
37    pub path: &'a [usize],
38    /// Frame data
39    pub data: &'a [u8],
40}
41
42impl<'a> From<&'a Frame> for FrameRef<'a> {
43    fn from(Frame { path, data }: &'a Frame) -> Self {
44        Self {
45            path: path.as_ref(),
46            data: data.as_ref(),
47        }
48    }
49}