asyncio/local/
seq_packet.rs1use prelude::{Protocol, Endpoint};
2use ffi::{AF_UNIX, SOCK_SEQPACKET};
3use seq_packet_socket::{SeqPacketSocket};
4use socket_listener::{SocketListener};
5use local::{LocalProtocol, LocalEndpoint};
6
7use std::fmt;
8use std::mem;
9
10#[derive(Clone, Eq, PartialEq, Ord, PartialOrd)]
30pub struct LocalSeqPacket;
31
32impl Protocol for LocalSeqPacket {
33 type Endpoint = LocalEndpoint<Self>;
34
35 fn family_type(&self) -> i32 {
36 AF_UNIX
37 }
38
39 fn socket_type(&self) -> i32 {
40 SOCK_SEQPACKET
41 }
42
43 fn protocol_type(&self) -> i32 {
44 0
45 }
46
47 unsafe fn uninitialized(&self) -> Self::Endpoint {
48 mem::uninitialized()
49 }
50}
51
52impl LocalProtocol for LocalSeqPacket {
53 type Socket = SeqPacketSocket<Self>;
54}
55
56impl Endpoint<LocalSeqPacket> for LocalEndpoint<LocalSeqPacket> {
57 fn protocol(&self) -> LocalSeqPacket {
58 LocalSeqPacket
59 }
60}
61
62impl fmt::Debug for LocalSeqPacket {
63 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
64 write!(f, "LocalSeqPacket")
65 }
66}
67
68impl fmt::Debug for LocalEndpoint<LocalSeqPacket> {
69 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
70 write!(f, "LocalEndpoint(SeqPacket:\"{}\")", self)
71 }
72}
73
74pub type LocalSeqPacketEndpoint = LocalEndpoint<LocalSeqPacket>;
76
77pub type LocalSeqPacketSocket = SeqPacketSocket<LocalSeqPacket>;
79
80pub type LocalSeqPacketListener = SocketListener<LocalSeqPacket, SeqPacketSocket<LocalSeqPacket>>;
82
83#[test]
84fn test_seq_packet() {
85 assert!(LocalSeqPacket == LocalSeqPacket);
86}
87
88#[test]
89#[cfg(target_os = "linux")]
90fn test_format() {
91 use core::IoContext;
92
93 let ctx = &IoContext::new().unwrap();
94 println!("{:?}", LocalSeqPacket);
95 println!("{:?}", LocalSeqPacketEndpoint::new("foo/bar").unwrap());
96 println!("{:?}", LocalSeqPacketSocket::new(ctx, LocalSeqPacket).unwrap());
97}