1 // Copyright 2018 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};
18 pub struct TcpStream(Void);
21 pub fn connect(_: io::Result<&SocketAddr>) -> io::Result<TcpStream> {
25 pub fn connect_timeout(_: &SocketAddr, _: Duration) -> io::Result<TcpStream> {
29 pub fn set_read_timeout(&self, _: Option<Duration>) -> io::Result<()> {
33 pub fn set_write_timeout(&self, _: Option<Duration>) -> io::Result<()> {
37 pub fn read_timeout(&self) -> io::Result<Option<Duration>> {
41 pub fn write_timeout(&self) -> io::Result<Option<Duration>> {
45 pub fn peek(&self, _: &mut [u8]) -> io::Result<usize> {
49 pub fn read(&self, _: &mut [u8]) -> io::Result<usize> {
53 pub fn write(&self, _: &[u8]) -> io::Result<usize> {
57 pub fn peer_addr(&self) -> io::Result<SocketAddr> {
61 pub fn socket_addr(&self) -> io::Result<SocketAddr> {
65 pub fn shutdown(&self, _: Shutdown) -> io::Result<()> {
69 pub fn duplicate(&self) -> io::Result<TcpStream> {
73 pub fn set_nodelay(&self, _: bool) -> io::Result<()> {
77 pub fn nodelay(&self) -> io::Result<bool> {
81 pub fn set_ttl(&self, _: u32) -> io::Result<()> {
85 pub fn ttl(&self) -> io::Result<u32> {
89 pub fn take_error(&self) -> io::Result<Option<io::Error>> {
93 pub fn set_nonblocking(&self, _: bool) -> io::Result<()> {
98 impl fmt::Debug for TcpStream {
99 fn fmt(&self, _f: &mut fmt::Formatter) -> fmt::Result {
104 pub struct TcpListener(Void);
107 pub fn bind(_: io::Result<&SocketAddr>) -> io::Result<TcpListener> {
111 pub fn socket_addr(&self) -> io::Result<SocketAddr> {
115 pub fn accept(&self) -> io::Result<(TcpStream, SocketAddr)> {
119 pub fn duplicate(&self) -> io::Result<TcpListener> {
123 pub fn set_ttl(&self, _: u32) -> io::Result<()> {
127 pub fn ttl(&self) -> io::Result<u32> {
131 pub fn set_only_v6(&self, _: bool) -> io::Result<()> {
135 pub fn only_v6(&self) -> io::Result<bool> {
139 pub fn take_error(&self) -> io::Result<Option<io::Error>> {
143 pub fn set_nonblocking(&self, _: bool) -> io::Result<()> {
148 impl fmt::Debug for TcpListener {
149 fn fmt(&self, _f: &mut fmt::Formatter) -> fmt::Result {
154 pub struct UdpSocket(Void);
157 pub fn bind(_: io::Result<&SocketAddr>) -> io::Result<UdpSocket> {
161 pub fn socket_addr(&self) -> io::Result<SocketAddr> {
165 pub fn recv_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)> {
169 pub fn peek_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)> {
173 pub fn send_to(&self, _: &[u8], _: &SocketAddr) -> io::Result<usize> {
177 pub fn duplicate(&self) -> io::Result<UdpSocket> {
181 pub fn set_read_timeout(&self, _: Option<Duration>) -> io::Result<()> {
185 pub fn set_write_timeout(&self, _: Option<Duration>) -> io::Result<()> {
189 pub fn read_timeout(&self) -> io::Result<Option<Duration>> {
193 pub fn write_timeout(&self) -> io::Result<Option<Duration>> {
197 pub fn set_broadcast(&self, _: bool) -> io::Result<()> {
201 pub fn broadcast(&self) -> io::Result<bool> {
205 pub fn set_multicast_loop_v4(&self, _: bool) -> io::Result<()> {
209 pub fn multicast_loop_v4(&self) -> io::Result<bool> {
213 pub fn set_multicast_ttl_v4(&self, _: u32) -> io::Result<()> {
217 pub fn multicast_ttl_v4(&self) -> io::Result<u32> {
221 pub fn set_multicast_loop_v6(&self, _: bool) -> io::Result<()> {
225 pub fn multicast_loop_v6(&self) -> io::Result<bool> {
229 pub fn join_multicast_v4(&self, _: &Ipv4Addr, _: &Ipv4Addr)
234 pub fn join_multicast_v6(&self, _: &Ipv6Addr, _: u32)
239 pub fn leave_multicast_v4(&self, _: &Ipv4Addr, _: &Ipv4Addr)
244 pub fn leave_multicast_v6(&self, _: &Ipv6Addr, _: u32)
249 pub fn set_ttl(&self, _: u32) -> io::Result<()> {
253 pub fn ttl(&self) -> io::Result<u32> {
257 pub fn take_error(&self) -> io::Result<Option<io::Error>> {
261 pub fn set_nonblocking(&self, _: bool) -> io::Result<()> {
265 pub fn recv(&self, _: &mut [u8]) -> io::Result<usize> {
269 pub fn peek(&self, _: &mut [u8]) -> io::Result<usize> {
273 pub fn send(&self, _: &[u8]) -> io::Result<usize> {
277 pub fn connect(&self, _: io::Result<&SocketAddr>) -> io::Result<()> {
282 impl fmt::Debug for UdpSocket {
283 fn fmt(&self, _f: &mut fmt::Formatter) -> fmt::Result {
288 pub struct LookupHost(Void);
291 pub fn port(&self) -> u16 {
296 impl Iterator for LookupHost {
297 type Item = SocketAddr;
298 fn next(&mut self) -> Option<SocketAddr> {
303 impl<'a> TryFrom<&'a str> for LookupHost {
304 type Error = io::Error;
306 fn try_from(_v: &'a str) -> io::Result<LookupHost> {
311 impl<'a> TryFrom<(&'a str, u16)> for LookupHost {
312 type Error = io::Error;
314 fn try_from(_v: (&'a str, u16)) -> io::Result<LookupHost> {
321 pub const AF_INET: u8 = 0;
322 pub const AF_INET6: u8 = 1;
323 pub type sa_family_t = u8;
325 #[derive(Copy, Clone)]
330 #[derive(Copy, Clone)]
331 pub struct sockaddr_in {
332 pub sin_family: sa_family_t,
334 pub sin_addr: in_addr,
337 #[derive(Copy, Clone)]
338 pub struct in6_addr {
339 pub s6_addr: [u8; 16],
342 #[derive(Copy, Clone)]
343 pub struct sockaddr_in6 {
344 pub sin6_family: sa_family_t,
346 pub sin6_addr: in6_addr,
347 pub sin6_flowinfo: u32,
348 pub sin6_scope_id: u32,
351 #[derive(Copy, Clone)]
352 pub struct sockaddr {
355 pub type socklen_t = usize;