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§

Trait Implementations§

source§

impl Debug for RemoteSocket

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Drop for RemoteSocket

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl VirtualConnectedSocket for RemoteSocket

source§

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>>

Returns how long the socket will remain in a TIME_WAIT after it disconnects
source§

fn try_send(&mut self, data: &[u8]) -> Result<usize>

Tries to send out a datagram or stream of bytes on this socket
source§

fn try_flush(&mut self) -> Result<()>

source§

fn close(&mut self) -> Result<()>

Closes the socket
source§

fn try_recv(&mut self, buf: &mut [MaybeUninit<u8>]) -> Result<usize>

Tries to read a packet from the socket
source§

impl VirtualConnectionlessSocket for RemoteSocket

source§

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)>

Recv a packet from the socket
source§

impl VirtualIoSource for RemoteSocket

source§

fn remove_handler(&mut self)

Removes a previously registered waker using a token
source§

fn poll_read_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<usize>>

Polls the source to see if there is data waiting
source§

fn poll_write_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<usize>>

Polls the source to see if data can be sent
source§

impl VirtualRawSocket for RemoteSocket

source§

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<()>

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>

Recv a packet from the socket
source§

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>

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

source§

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>

Returns the maximum number of network hops before packets are dropped
source§

fn addr_local(&self) -> Result<SocketAddr>

Returns the local address for this socket
source§

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<()>

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

source§

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<()>

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>

Returns the local address of this TCP listener
source§

fn set_ttl(&mut self, ttl: u8) -> Result<()>

Sets how many network hops the packets are permitted for new connections
source§

fn ttl(&self) -> Result<u8>

Returns the maximum number of network hops before packets are dropped
source§

impl VirtualTcpSocket for RemoteSocket

source§

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>

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<()>

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>

Size of the send buffer that holds all data that is currently being transmitted.
source§

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>

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<()>

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>

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<()>

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>

Indicates if the packet will pass straight through to the interface bypassing the routing logic.
source§

fn addr_peer(&self) -> Result<SocketAddr>

Returns the address (IP and Port) of the peer socket that this is conencted to
source§

fn shutdown(&mut self, how: Shutdown) -> Result<()>

Shuts down either the READER or WRITER sides of the socket connection.
source§

fn is_closed(&self) -> bool

Return true if the socket is closed
source§

impl VirtualUdpSocket for RemoteSocket

source§

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>

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<()>

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>

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<()>

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>

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<()>

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>

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<()>

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<()>

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<()>

Tells this interface that it will subscribe to a particular multicast address. This applies to IPv6 addresses
source§

fn leave_multicast_v6(&mut self, multiaddr: Ipv6Addr, iface: u32) -> Result<()>

Tells this interface that it will unsubscribe to a particular multicast address. This applies to IPv6 addresses
source§

fn addr_peer(&self) -> Result<Option<SocketAddr>>

Returns the remote address of this UDP socket if it has been connected to a specific target destination address
source§

impl VirtualIcmpSocket for RemoteSocket

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> LayoutRaw for T

§

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 N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

§

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
§

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
§

impl<T> Pointee for T

§

type Metadata = ()

The metadata type for pointers and references to this type.
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<R> VirtualConnectedSocketExt for R

source§

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,

source§

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,

source§

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 R

source§

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,

source§

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 R

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,

Accepts a new connection from the TCP listener
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

§

impl<T> MaybeSendSync for T