dope_sys/io/socket/record/
mod.rs1use crate::Errno;
2
3mod packet;
4mod stream;
5
6pub use packet::Packet;
7pub use stream::Stream;
8
9pub trait Transport {
11 fn send(
13 value: u32,
14 send: impl for<'a> FnMut(&'a [u8]) -> Result<&'a [u8], Errno>,
15 ) -> Result<(), Fault>;
16
17 fn recv(recv: impl for<'a> FnMut(&'a mut [u8]) -> Result<&'a mut [u8], Errno>) -> Record;
19}
20
21#[derive(Debug)]
22pub struct Size {
23 pub expected: usize,
24 pub actual: usize,
26}
27
28#[derive(Debug)]
29pub enum Fault {
30 Syscall(Errno),
31 Record(Size),
32}
33
34#[derive(Debug)]
35pub enum Record {
36 Value(u32),
37 Closed,
38 Failed(Fault),
39}
40
41#[derive(Clone, Copy, Debug, PartialEq, Eq)]
42#[repr(u8)]
43pub enum End {
44 Left,
45 Right,
46}
47
48#[derive(Clone, Copy, Debug, PartialEq, Eq)]
49pub enum Error {
50 Open(Errno),
51 Cloexec { end: End, error: crate::Cloexec },
52 Sigpipe { end: End, error: Errno },
53}