2019-02-10 19:23:21 +00:00
|
|
|
use crate::fmt;
|
2023-02-21 00:00:00 +00:00
|
|
|
use crate::io::{self, BorrowedCursor, IoSlice, IoSliceMut};
|
2019-02-10 19:23:21 +00:00
|
|
|
use crate::net::{Ipv4Addr, Ipv6Addr, Shutdown, SocketAddr};
|
2021-04-14 00:37:36 +00:00
|
|
|
use crate::sys::unsupported;
|
2019-02-10 19:23:21 +00:00
|
|
|
use crate::time::Duration;
|
2017-10-23 03:01:00 +00:00
|
|
|
|
2021-04-14 00:37:36 +00:00
|
|
|
pub struct TcpStream(!);
|
2017-10-23 03:01:00 +00:00
|
|
|
|
|
|
|
impl TcpStream {
|
2018-09-18 22:25:08 +00:00
|
|
|
pub fn connect(_: io::Result<&SocketAddr>) -> io::Result<TcpStream> {
|
2017-10-23 03:01:00 +00:00
|
|
|
unsupported()
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn connect_timeout(_: &SocketAddr, _: Duration) -> io::Result<TcpStream> {
|
|
|
|
unsupported()
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn set_read_timeout(&self, _: Option<Duration>) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn set_write_timeout(&self, _: Option<Duration>) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn read_timeout(&self) -> io::Result<Option<Duration>> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn write_timeout(&self) -> io::Result<Option<Duration>> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn peek(&self, _: &mut [u8]) -> io::Result<usize> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn read(&self, _: &mut [u8]) -> io::Result<usize> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
2023-02-21 00:00:00 +00:00
|
|
|
pub fn read_buf(&self, _buf: BorrowedCursor<'_>) -> io::Result<()> {
|
|
|
|
self.0
|
|
|
|
}
|
|
|
|
|
2019-04-27 15:34:08 +00:00
|
|
|
pub fn read_vectored(&self, _: &mut [IoSliceMut<'_>]) -> io::Result<usize> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2019-02-08 19:42:34 +00:00
|
|
|
}
|
|
|
|
|
2020-03-12 01:02:52 +00:00
|
|
|
pub fn is_read_vectored(&self) -> bool {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2020-01-03 19:26:05 +00:00
|
|
|
}
|
|
|
|
|
2017-10-23 03:01:00 +00:00
|
|
|
pub fn write(&self, _: &[u8]) -> io::Result<usize> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
2019-04-27 15:34:08 +00:00
|
|
|
pub fn write_vectored(&self, _: &[IoSlice<'_>]) -> io::Result<usize> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2019-02-08 19:42:34 +00:00
|
|
|
}
|
|
|
|
|
2020-03-12 01:02:52 +00:00
|
|
|
pub fn is_write_vectored(&self) -> bool {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2020-01-03 19:26:05 +00:00
|
|
|
}
|
|
|
|
|
2017-10-23 03:01:00 +00:00
|
|
|
pub fn peer_addr(&self) -> io::Result<SocketAddr> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn socket_addr(&self) -> io::Result<SocketAddr> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn shutdown(&self, _: Shutdown) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn duplicate(&self) -> io::Result<TcpStream> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
2021-08-30 17:02:15 +00:00
|
|
|
pub fn set_linger(&self, _: Option<Duration>) -> io::Result<()> {
|
|
|
|
self.0
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn linger(&self) -> io::Result<Option<Duration>> {
|
|
|
|
self.0
|
|
|
|
}
|
|
|
|
|
2017-10-23 03:01:00 +00:00
|
|
|
pub fn set_nodelay(&self, _: bool) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn nodelay(&self) -> io::Result<bool> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn set_ttl(&self, _: u32) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn ttl(&self) -> io::Result<u32> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn take_error(&self) -> io::Result<Option<io::Error>> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn set_nonblocking(&self, _: bool) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl fmt::Debug for TcpStream {
|
2019-03-01 08:34:11 +00:00
|
|
|
fn fmt(&self, _f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-04-14 00:37:36 +00:00
|
|
|
pub struct TcpListener(!);
|
2017-10-23 03:01:00 +00:00
|
|
|
|
|
|
|
impl TcpListener {
|
2018-09-18 22:25:08 +00:00
|
|
|
pub fn bind(_: io::Result<&SocketAddr>) -> io::Result<TcpListener> {
|
2017-10-23 03:01:00 +00:00
|
|
|
unsupported()
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn socket_addr(&self) -> io::Result<SocketAddr> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn accept(&self) -> io::Result<(TcpStream, SocketAddr)> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn duplicate(&self) -> io::Result<TcpListener> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn set_ttl(&self, _: u32) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn ttl(&self) -> io::Result<u32> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn set_only_v6(&self, _: bool) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn only_v6(&self) -> io::Result<bool> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn take_error(&self) -> io::Result<Option<io::Error>> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn set_nonblocking(&self, _: bool) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl fmt::Debug for TcpListener {
|
2019-03-01 08:34:11 +00:00
|
|
|
fn fmt(&self, _f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-04-14 00:37:36 +00:00
|
|
|
pub struct UdpSocket(!);
|
2017-10-23 03:01:00 +00:00
|
|
|
|
|
|
|
impl UdpSocket {
|
2018-09-18 22:25:08 +00:00
|
|
|
pub fn bind(_: io::Result<&SocketAddr>) -> io::Result<UdpSocket> {
|
2017-10-23 03:01:00 +00:00
|
|
|
unsupported()
|
|
|
|
}
|
|
|
|
|
2019-03-16 11:20:02 +00:00
|
|
|
pub fn peer_addr(&self) -> io::Result<SocketAddr> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2019-03-16 11:20:02 +00:00
|
|
|
}
|
|
|
|
|
2017-10-23 03:01:00 +00:00
|
|
|
pub fn socket_addr(&self) -> io::Result<SocketAddr> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn recv_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn peek_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn send_to(&self, _: &[u8], _: &SocketAddr) -> io::Result<usize> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn duplicate(&self) -> io::Result<UdpSocket> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn set_read_timeout(&self, _: Option<Duration>) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn set_write_timeout(&self, _: Option<Duration>) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn read_timeout(&self) -> io::Result<Option<Duration>> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn write_timeout(&self) -> io::Result<Option<Duration>> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn set_broadcast(&self, _: bool) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn broadcast(&self) -> io::Result<bool> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn set_multicast_loop_v4(&self, _: bool) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn multicast_loop_v4(&self) -> io::Result<bool> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn set_multicast_ttl_v4(&self, _: u32) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn multicast_ttl_v4(&self) -> io::Result<u32> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn set_multicast_loop_v6(&self, _: bool) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn multicast_loop_v6(&self) -> io::Result<bool> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn join_multicast_v4(&self, _: &Ipv4Addr, _: &Ipv4Addr) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn join_multicast_v6(&self, _: &Ipv6Addr, _: u32) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn leave_multicast_v4(&self, _: &Ipv4Addr, _: &Ipv4Addr) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn leave_multicast_v6(&self, _: &Ipv6Addr, _: u32) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn set_ttl(&self, _: u32) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn ttl(&self) -> io::Result<u32> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn take_error(&self) -> io::Result<Option<io::Error>> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn set_nonblocking(&self, _: bool) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn recv(&self, _: &mut [u8]) -> io::Result<usize> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn peek(&self, _: &mut [u8]) -> io::Result<usize> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn send(&self, _: &[u8]) -> io::Result<usize> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
|
2018-09-18 22:25:08 +00:00
|
|
|
pub fn connect(&self, _: io::Result<&SocketAddr>) -> io::Result<()> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl fmt::Debug for UdpSocket {
|
2019-03-01 08:34:11 +00:00
|
|
|
fn fmt(&self, _f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-04-14 00:37:36 +00:00
|
|
|
pub struct LookupHost(!);
|
2017-10-23 03:01:00 +00:00
|
|
|
|
2018-09-18 22:25:08 +00:00
|
|
|
impl LookupHost {
|
|
|
|
pub fn port(&self) -> u16 {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2018-09-18 22:25:08 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-10-23 03:01:00 +00:00
|
|
|
impl Iterator for LookupHost {
|
|
|
|
type Item = SocketAddr;
|
|
|
|
fn next(&mut self) -> Option<SocketAddr> {
|
2021-04-14 01:19:01 +00:00
|
|
|
self.0
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-03-10 03:10:28 +00:00
|
|
|
impl TryFrom<&str> for LookupHost {
|
2018-09-18 22:25:08 +00:00
|
|
|
type Error = io::Error;
|
|
|
|
|
2019-03-10 03:10:28 +00:00
|
|
|
fn try_from(_v: &str) -> io::Result<LookupHost> {
|
2018-09-18 22:25:08 +00:00
|
|
|
unsupported()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl<'a> TryFrom<(&'a str, u16)> for LookupHost {
|
|
|
|
type Error = io::Error;
|
|
|
|
|
|
|
|
fn try_from(_v: (&'a str, u16)) -> io::Result<LookupHost> {
|
|
|
|
unsupported()
|
|
|
|
}
|
2017-10-23 03:01:00 +00:00
|
|
|
}
|