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;