asyncio/generic/
seq_packet.rs1use 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>>;