asyncio/generic/
seq_packet.rs

1use prelude::{Protocol, SockAddr, Endpoint};
2use ffi::SOCK_SEQPACKET;
3use seq_packet_socket::{SeqPacketSocket};
4use socket_listener::{SocketListener};
5use generic::GenericEndpoint;
6
7#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug)]
8pub struct GenericSeqPacket {
9    family: i32,
10    protocol: i32,
11    capacity: usize,
12}
13
14impl Protocol for GenericSeqPacket {
15    type Endpoint = GenericEndpoint<Self>;
16
17    fn family_type(&self) -> i32 {
18        self.family
19    }
20
21    fn socket_type(&self) -> i32 {
22        SOCK_SEQPACKET
23    }
24
25    fn protocol_type(&self) -> i32 {
26        self.protocol
27    }
28
29    unsafe fn uninitialized(&self) -> Self::Endpoint {
30        GenericEndpoint::default(self.capacity, self.protocol)
31    }
32}
33
34impl Endpoint<GenericSeqPacket> for GenericEndpoint<GenericSeqPacket> {
35    fn protocol(&self) -> GenericSeqPacket {
36        GenericSeqPacket {
37            family:  self.as_ref().sa_family as i32,
38            protocol: self.protocol,
39            capacity: self.capacity(),
40        }
41    }
42}
43
44pub type GenericSeqPacketEndpoint = GenericEndpoint<GenericSeqPacket>;
45
46pub type GenericSeqPacketSocket = SeqPacketSocket<GenericSeqPacket>;
47
48pub type GenericSeqPacketListener = SocketListener<GenericSeqPacket, SeqPacketSocket<GenericSeqPacket>>;