rotor_stream/
trait_impls.rs

1use std::io;
2use std::any::Any;
3use std::net::SocketAddr;
4#[cfg(unix)]
5use std::path::PathBuf;
6
7use rotor::mio::Evented;
8use rotor::mio::tcp;
9#[cfg(unix)]
10use rotor::mio::unix;
11
12use {StreamSocket, ActiveStream, SocketError};
13
14impl<T> StreamSocket for T
15    where T: io::Read, T: io::Write, T: Evented, T:SocketError, T:Any
16{}
17
18impl ActiveStream for tcp::TcpStream {
19    type Address = SocketAddr;
20    fn connect(addr: &SocketAddr) -> io::Result<Self> {
21        tcp::TcpStream::connect(addr)
22    }
23}
24
25#[cfg(unix)]
26impl ActiveStream for unix::UnixStream {
27    type Address = PathBuf;
28    fn connect(addr: &PathBuf) -> io::Result<Self> {
29        unix::UnixStream::connect(addr)
30    }
31}
32
33impl SocketError for tcp::TcpStream {
34    fn take_socket_error(&self) -> io::Result<()> {
35        tcp::TcpStream::take_socket_error(self)
36    }
37}
38
39#[cfg(unix)]
40impl SocketError for unix::UnixStream {
41    fn take_socket_error(&self) -> io::Result<()> {
42        Ok(())
43    }
44}