Struct virtual_net::client::RemoteSocket
source · struct RemoteSocket {
socket_id: SocketId,
common: Arc<RemoteCommon>,
rx_buffer: BytesMut,
rx_recv: Receiver<Vec<u8>>,
rx_recv_with_addr: Receiver<DataWithAddr>,
tx_waker: Waker,
rx_accept: Receiver<SocketWithAddr>,
rx_sent: Receiver<u64>,
pending_accept: Option<(SocketId, Receiver<Vec<u8>>)>,
buffer_recv_with_addr: VecDeque<DataWithAddr>,
buffer_accept: VecDeque<SocketWithAddr>,
send_available: u64,
}
Fields§
§socket_id: SocketId
§common: Arc<RemoteCommon>
§rx_buffer: BytesMut
§rx_recv: Receiver<Vec<u8>>
§rx_recv_with_addr: Receiver<DataWithAddr>
§tx_waker: Waker
§rx_accept: Receiver<SocketWithAddr>
§rx_sent: Receiver<u64>
§pending_accept: Option<(SocketId, Receiver<Vec<u8>>)>
§buffer_recv_with_addr: VecDeque<DataWithAddr>
§buffer_accept: VecDeque<SocketWithAddr>
§send_available: u64
Implementations§
source§impl RemoteSocket
impl RemoteSocket
async fn io_socket(&self, req: RequestType) -> ResponseType
fn io_socket_fire_and_forget(&self, req: RequestType) -> Result<()>
fn touch_begin_accept(&mut self) -> Result<()>
Trait Implementations§
source§impl Debug for RemoteSocket
impl Debug for RemoteSocket
source§impl Drop for RemoteSocket
impl Drop for RemoteSocket
source§impl VirtualConnectedSocket for RemoteSocket
impl VirtualConnectedSocket for RemoteSocket
source§fn set_linger(&mut self, linger: Option<Duration>) -> Result<()>
fn set_linger(&mut self, linger: Option<Duration>) -> Result<()>
Determines how long the socket will remain in a TIME_WAIT
after it disconnects (only the one that initiates the close will
be in a TIME_WAIT state thus the clients should always do this rather
than the server)
source§fn linger(&self) -> Result<Option<Duration>>
fn linger(&self) -> Result<Option<Duration>>
Returns how long the socket will remain in a TIME_WAIT
after it disconnects
source§fn try_send(&mut self, data: &[u8]) -> Result<usize>
fn try_send(&mut self, data: &[u8]) -> Result<usize>
Tries to send out a datagram or stream of bytes on this socket
fn try_flush(&mut self) -> Result<()>
source§impl VirtualConnectionlessSocket for RemoteSocket
impl VirtualConnectionlessSocket for RemoteSocket
source§fn try_send_to(&mut self, data: &[u8], addr: SocketAddr) -> Result<usize>
fn try_send_to(&mut self, data: &[u8], addr: SocketAddr) -> Result<usize>
Sends out a datagram or stream of bytes on this socket
to a specific address
source§fn try_recv_from(
&mut self,
buf: &mut [MaybeUninit<u8>],
) -> Result<(usize, SocketAddr)>
fn try_recv_from( &mut self, buf: &mut [MaybeUninit<u8>], ) -> Result<(usize, SocketAddr)>
Recv a packet from the socket
source§impl VirtualIoSource for RemoteSocket
impl VirtualIoSource for RemoteSocket
source§fn remove_handler(&mut self)
fn remove_handler(&mut self)
Removes a previously registered waker using a token
source§impl VirtualRawSocket for RemoteSocket
impl VirtualRawSocket for RemoteSocket
source§fn try_send(&mut self, data: &[u8]) -> Result<usize>
fn try_send(&mut self, data: &[u8]) -> Result<usize>
Sends out a datagram or stream of bytes on this socket
source§fn try_flush(&mut self) -> Result<()>
fn try_flush(&mut self) -> Result<()>
Attempts to flush the object, ensuring that any buffered data reach
their destination.
source§fn try_recv(&mut self, buf: &mut [MaybeUninit<u8>]) -> Result<usize>
fn try_recv(&mut self, buf: &mut [MaybeUninit<u8>]) -> Result<usize>
Recv a packet from the socket
source§fn set_promiscuous(&mut self, promiscuous: bool) -> Result<()>
fn set_promiscuous(&mut self, promiscuous: bool) -> Result<()>
Tells the raw socket and its backing switch that all packets
should be received by this socket even if they are not
destined for this device
source§fn promiscuous(&self) -> Result<bool>
fn promiscuous(&self) -> Result<bool>
Returns if the socket is running in promiscuous mode whereby it
will receive all packets even if they are not destined for the
local interface
source§impl VirtualSocket for RemoteSocket
impl VirtualSocket for RemoteSocket
source§fn set_ttl(&mut self, ttl: u32) -> Result<()>
fn set_ttl(&mut self, ttl: u32) -> Result<()>
Sets how many network hops the packets are permitted for new connections
source§fn ttl(&self) -> Result<u32>
fn ttl(&self) -> Result<u32>
Returns the maximum number of network hops before packets are dropped
source§fn addr_local(&self) -> Result<SocketAddr>
fn addr_local(&self) -> Result<SocketAddr>
Returns the local address for this socket
source§fn status(&self) -> Result<SocketStatus>
fn status(&self) -> Result<SocketStatus>
Returns the status/state of the socket
source§fn set_handler(
&mut self,
handler: Box<dyn InterestHandler + Send + Sync>,
) -> Result<()>
fn set_handler( &mut self, handler: Box<dyn InterestHandler + Send + Sync>, ) -> Result<()>
Registers a waker for when this connection is ready to receive
more data. Uses a stack machine which means more than one waker
can be registered
source§impl VirtualTcpListener for RemoteSocket
impl VirtualTcpListener for RemoteSocket
source§fn try_accept(
&mut self,
) -> Result<(Box<dyn VirtualTcpSocket + Sync>, SocketAddr)>
fn try_accept( &mut self, ) -> Result<(Box<dyn VirtualTcpSocket + Sync>, SocketAddr)>
Tries to accept a new connection
source§fn set_handler(
&mut self,
handler: Box<dyn InterestHandler + Send + Sync>,
) -> Result<()>
fn set_handler( &mut self, handler: Box<dyn InterestHandler + Send + Sync>, ) -> Result<()>
Registers a waker for when a new connection has arrived. This uses
a stack machine which means more than one waker can be registered
source§fn addr_local(&self) -> Result<SocketAddr>
fn addr_local(&self) -> Result<SocketAddr>
Returns the local address of this TCP listener
source§impl VirtualTcpSocket for RemoteSocket
impl VirtualTcpSocket for RemoteSocket
source§fn set_recv_buf_size(&mut self, size: usize) -> Result<()>
fn set_recv_buf_size(&mut self, size: usize) -> Result<()>
Sets the receive buffer size which acts as a trottle for how
much data is buffered on this side of the pipe
source§fn recv_buf_size(&self) -> Result<usize>
fn recv_buf_size(&self) -> Result<usize>
Size of the receive buffer that holds all data that has not
yet been read
source§fn set_send_buf_size(&mut self, size: usize) -> Result<()>
fn set_send_buf_size(&mut self, size: usize) -> Result<()>
Sets the size of the send buffer which will hold the bytes of
data while they are being sent over to the peer
source§fn send_buf_size(&self) -> Result<usize>
fn send_buf_size(&self) -> Result<usize>
Size of the send buffer that holds all data that is currently
being transmitted.
source§fn set_nodelay(&mut self, reuse: bool) -> Result<()>
fn set_nodelay(&mut self, reuse: bool) -> Result<()>
When NO_DELAY is set the data that needs to be transmitted to
the peer is sent immediately rather than waiting for a bigger
batch of data, this reduces latency but increases encapsulation
overhead.
source§fn nodelay(&self) -> Result<bool>
fn nodelay(&self) -> Result<bool>
Indicates if the NO_DELAY flag is set which means that data
is immediately sent to the peer without waiting. This reduces
latency but increases encapsulation overhead.
source§fn set_keepalive(&mut self, keep_alive: bool) -> Result<()>
fn set_keepalive(&mut self, keep_alive: bool) -> Result<()>
When KEEP_ALIVE is set the connection will periodically send
an empty data packet to the server to make sure the connection
stays alive.
source§fn keepalive(&self) -> Result<bool>
fn keepalive(&self) -> Result<bool>
Indicates if the KEEP_ALIVE flag is set which means that the
socket will periodically send an empty data packet to keep
the connection alive.
source§fn set_dontroute(&mut self, dont_route: bool) -> Result<()>
fn set_dontroute(&mut self, dont_route: bool) -> Result<()>
When DONT_ROUTE is set the packet will be sent directly
to the interface without passing through the routing logic.
source§fn dontroute(&self) -> Result<bool>
fn dontroute(&self) -> Result<bool>
Indicates if the packet will pass straight through to
the interface bypassing the routing logic.
source§fn addr_peer(&self) -> Result<SocketAddr>
fn addr_peer(&self) -> Result<SocketAddr>
Returns the address (IP and Port) of the peer socket that this
is conencted to
source§impl VirtualUdpSocket for RemoteSocket
impl VirtualUdpSocket for RemoteSocket
source§fn set_broadcast(&mut self, broadcast: bool) -> Result<()>
fn set_broadcast(&mut self, broadcast: bool) -> Result<()>
Sets a flag that means that the UDP socket is able
to receive and process broadcast packets.
source§fn broadcast(&self) -> Result<bool>
fn broadcast(&self) -> Result<bool>
Indicates if the SO_BROADCAST flag is set which means
that the UDP socket will receive and process broadcast
packets
source§fn set_multicast_loop_v4(&mut self, val: bool) -> Result<()>
fn set_multicast_loop_v4(&mut self, val: bool) -> Result<()>
Sets a flag that indicates if multicast packets that
this socket is a member of will be looped back to
the sending socket. This applies to IPv4 addresses
source§fn multicast_loop_v4(&self) -> Result<bool>
fn multicast_loop_v4(&self) -> Result<bool>
Gets a flag that indicates if multicast packets that
this socket is a member of will be looped back to
the sending socket. This applies to IPv4 addresses
source§fn set_multicast_loop_v6(&mut self, val: bool) -> Result<()>
fn set_multicast_loop_v6(&mut self, val: bool) -> Result<()>
Sets a flag that indicates if multicast packets that
this socket is a member of will be looped back to
the sending socket. This applies to IPv6 addresses
source§fn multicast_loop_v6(&self) -> Result<bool>
fn multicast_loop_v6(&self) -> Result<bool>
Gets a flag that indicates if multicast packets that
this socket is a member of will be looped back to
the sending socket. This applies to IPv6 addresses
source§fn set_multicast_ttl_v4(&mut self, ttl: u32) -> Result<()>
fn set_multicast_ttl_v4(&mut self, ttl: u32) -> Result<()>
Sets the TTL for IPv4 multicast packets which is the
number of network hops before the packet is dropped
source§fn multicast_ttl_v4(&self) -> Result<u32>
fn multicast_ttl_v4(&self) -> Result<u32>
Gets the TTL for IPv4 multicast packets which is the
number of network hops before the packet is dropped
source§fn join_multicast_v4(
&mut self,
multiaddr: Ipv4Addr,
iface: Ipv4Addr,
) -> Result<()>
fn join_multicast_v4( &mut self, multiaddr: Ipv4Addr, iface: Ipv4Addr, ) -> Result<()>
Tells this interface that it will subscribe to a
particular multicast address. This applies to IPv4 addresses
source§fn leave_multicast_v4(
&mut self,
multiaddr: Ipv4Addr,
iface: Ipv4Addr,
) -> Result<()>
fn leave_multicast_v4( &mut self, multiaddr: Ipv4Addr, iface: Ipv4Addr, ) -> Result<()>
Tells this interface that it will unsubscribe to a
particular multicast address. This applies to IPv4 addresses
source§fn join_multicast_v6(&mut self, multiaddr: Ipv6Addr, iface: u32) -> Result<()>
fn join_multicast_v6(&mut self, multiaddr: Ipv6Addr, iface: u32) -> Result<()>
Tells this interface that it will subscribe to a
particular multicast address. This applies to IPv6 addresses
impl VirtualIcmpSocket for RemoteSocket
Auto Trait Implementations§
impl Freeze for RemoteSocket
impl !RefUnwindSafe for RemoteSocket
impl Send for RemoteSocket
impl Sync for RemoteSocket
impl Unpin for RemoteSocket
impl !UnwindSafe for RemoteSocket
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
§impl<T> Pointee for T
impl<T> Pointee for T
source§impl<R> VirtualConnectedSocketExt for Rwhere
R: VirtualConnectedSocket + ?Sized,
impl<R> VirtualConnectedSocketExt for Rwhere
R: VirtualConnectedSocket + ?Sized,
fn send<'life0, 'life1, 'async_trait>(
&'life0 mut self,
data: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = Result<usize, NetworkError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
R: 'async_trait,
fn recv<'life0, 'life1, 'async_trait>(
&'life0 mut self,
buf: &'life1 mut [MaybeUninit<u8>],
) -> Pin<Box<dyn Future<Output = Result<usize, NetworkError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
R: 'async_trait,
fn flush<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<(), NetworkError>> + Send + 'async_trait>>where
'life0: 'async_trait,
R: 'async_trait,
source§impl<R> VirtualConnectionlessSocketExt for Rwhere
R: VirtualConnectionlessSocket + ?Sized,
impl<R> VirtualConnectionlessSocketExt for Rwhere
R: VirtualConnectionlessSocket + ?Sized,
fn send_to<'life0, 'life1, 'async_trait>(
&'life0 mut self,
data: &'life1 [u8],
addr: SocketAddr,
) -> Pin<Box<dyn Future<Output = Result<usize, NetworkError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
R: 'async_trait,
fn recv_from<'life0, 'life1, 'async_trait>(
&'life0 mut self,
buf: &'life1 mut [MaybeUninit<u8>],
) -> Pin<Box<dyn Future<Output = Result<(usize, SocketAddr), NetworkError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
R: 'async_trait,
source§impl<R> VirtualTcpListenerExt for Rwhere
R: VirtualTcpListener + ?Sized,
impl<R> VirtualTcpListenerExt for Rwhere
R: VirtualTcpListener + ?Sized,
source§fn accept<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<(Box<dyn VirtualTcpSocket + Sync>, SocketAddr), NetworkError>> + Send + 'async_trait>>where
'life0: 'async_trait,
R: 'async_trait,
fn accept<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<(Box<dyn VirtualTcpSocket + Sync>, SocketAddr), NetworkError>> + Send + 'async_trait>>where
'life0: 'async_trait,
R: 'async_trait,
Accepts a new connection from the TCP listener