1 // Copyright 2017 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
13 use net::{SocketAddr, Shutdown, Ipv4Addr, Ipv6Addr};
15 use sys::{unsupported, Void};
17 pub struct TcpStream(Void);
20 pub fn connect(_: &SocketAddr) -> io::Result<TcpStream> {
24 pub fn connect_timeout(_: &SocketAddr, _: Duration) -> io::Result<TcpStream> {
28 pub fn set_read_timeout(&self, _: Option<Duration>) -> io::Result<()> {
32 pub fn set_write_timeout(&self, _: Option<Duration>) -> io::Result<()> {
36 pub fn read_timeout(&self) -> io::Result<Option<Duration>> {
40 pub fn write_timeout(&self) -> io::Result<Option<Duration>> {
44 pub fn peek(&self, _: &mut [u8]) -> io::Result<usize> {
48 pub fn read(&self, _: &mut [u8]) -> io::Result<usize> {
52 pub fn write(&self, _: &[u8]) -> io::Result<usize> {
56 pub fn peer_addr(&self) -> io::Result<SocketAddr> {
60 pub fn socket_addr(&self) -> io::Result<SocketAddr> {
64 pub fn shutdown(&self, _: Shutdown) -> io::Result<()> {
68 pub fn duplicate(&self) -> io::Result<TcpStream> {
72 pub fn set_nodelay(&self, _: bool) -> io::Result<()> {
76 pub fn nodelay(&self) -> io::Result<bool> {
80 pub fn set_ttl(&self, _: u32) -> io::Result<()> {
84 pub fn ttl(&self) -> io::Result<u32> {
88 pub fn take_error(&self) -> io::Result<Option<io::Error>> {
92 pub fn set_nonblocking(&self, _: bool) -> io::Result<()> {
97 impl fmt::Debug for TcpStream {
98 fn fmt(&self, _f: &mut fmt::Formatter) -> fmt::Result {
103 pub struct TcpListener(Void);
106 pub fn bind(_: &SocketAddr) -> io::Result<TcpListener> {
110 pub fn socket_addr(&self) -> io::Result<SocketAddr> {
114 pub fn accept(&self) -> io::Result<(TcpStream, SocketAddr)> {
118 pub fn duplicate(&self) -> io::Result<TcpListener> {
122 pub fn set_ttl(&self, _: u32) -> io::Result<()> {
126 pub fn ttl(&self) -> io::Result<u32> {
130 pub fn set_only_v6(&self, _: bool) -> io::Result<()> {
134 pub fn only_v6(&self) -> io::Result<bool> {
138 pub fn take_error(&self) -> io::Result<Option<io::Error>> {
142 pub fn set_nonblocking(&self, _: bool) -> io::Result<()> {
147 impl fmt::Debug for TcpListener {
148 fn fmt(&self, _f: &mut fmt::Formatter) -> fmt::Result {
153 pub struct UdpSocket(Void);
156 pub fn bind(_: &SocketAddr) -> io::Result<UdpSocket> {
160 pub fn socket_addr(&self) -> io::Result<SocketAddr> {
164 pub fn recv_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)> {
168 pub fn peek_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)> {
172 pub fn send_to(&self, _: &[u8], _: &SocketAddr) -> io::Result<usize> {
176 pub fn duplicate(&self) -> io::Result<UdpSocket> {
180 pub fn set_read_timeout(&self, _: Option<Duration>) -> io::Result<()> {
184 pub fn set_write_timeout(&self, _: Option<Duration>) -> io::Result<()> {
188 pub fn read_timeout(&self) -> io::Result<Option<Duration>> {
192 pub fn write_timeout(&self) -> io::Result<Option<Duration>> {
196 pub fn set_broadcast(&self, _: bool) -> io::Result<()> {
200 pub fn broadcast(&self) -> io::Result<bool> {
204 pub fn set_multicast_loop_v4(&self, _: bool) -> io::Result<()> {
208 pub fn multicast_loop_v4(&self) -> io::Result<bool> {
212 pub fn set_multicast_ttl_v4(&self, _: u32) -> io::Result<()> {
216 pub fn multicast_ttl_v4(&self) -> io::Result<u32> {
220 pub fn set_multicast_loop_v6(&self, _: bool) -> io::Result<()> {
224 pub fn multicast_loop_v6(&self) -> io::Result<bool> {
228 pub fn join_multicast_v4(&self, _: &Ipv4Addr, _: &Ipv4Addr)
233 pub fn join_multicast_v6(&self, _: &Ipv6Addr, _: u32)
238 pub fn leave_multicast_v4(&self, _: &Ipv4Addr, _: &Ipv4Addr)
243 pub fn leave_multicast_v6(&self, _: &Ipv6Addr, _: u32)
248 pub fn set_ttl(&self, _: u32) -> io::Result<()> {
252 pub fn ttl(&self) -> io::Result<u32> {
256 pub fn take_error(&self) -> io::Result<Option<io::Error>> {
260 pub fn set_nonblocking(&self, _: bool) -> io::Result<()> {
264 pub fn recv(&self, _: &mut [u8]) -> io::Result<usize> {
268 pub fn peek(&self, _: &mut [u8]) -> io::Result<usize> {
272 pub fn send(&self, _: &[u8]) -> io::Result<usize> {
276 pub fn connect(&self, _: &SocketAddr) -> io::Result<()> {
281 impl fmt::Debug for UdpSocket {
282 fn fmt(&self, _f: &mut fmt::Formatter) -> fmt::Result {
287 pub struct LookupHost(Void);
289 impl Iterator for LookupHost {
290 type Item = SocketAddr;
291 fn next(&mut self) -> Option<SocketAddr> {
296 pub fn lookup_host(_: &str) -> io::Result<LookupHost> {
302 pub const AF_INET: u8 = 0;
303 pub const AF_INET6: u8 = 1;
304 pub type sa_family_t = u8;
306 #[derive(Copy, Clone)]
311 #[derive(Copy, Clone)]
312 pub struct sockaddr_in {
313 pub sin_family: sa_family_t,
315 pub sin_addr: in_addr,
318 #[derive(Copy, Clone)]
319 pub struct in6_addr {
320 pub s6_addr: [u8; 16],
323 #[derive(Copy, Clone)]
324 pub struct sockaddr_in6 {
325 pub sin6_family: sa_family_t,
327 pub sin6_addr: in6_addr,
328 pub sin6_flowinfo: u32,
329 pub sin6_scope_id: u32,
332 #[derive(Copy, Clone)]
333 pub struct sockaddr {
336 pub type socklen_t = usize;