pub struct RawSocket<'a> { /* private fields */ }
Expand description
An Raw socket.
Implementations§
Source§impl<'a> RawSocket<'a>
impl<'a> RawSocket<'a>
Sourcepub fn new<D: Driver>(
stack: Stack<'a>,
ip_version: IpVersion,
ip_protocol: IpProtocol,
rx_meta: &'a mut [PacketMetadata],
rx_buffer: &'a mut [u8],
tx_meta: &'a mut [PacketMetadata],
tx_buffer: &'a mut [u8],
) -> Self
pub fn new<D: Driver>( stack: Stack<'a>, ip_version: IpVersion, ip_protocol: IpProtocol, rx_meta: &'a mut [PacketMetadata], rx_buffer: &'a mut [u8], tx_meta: &'a mut [PacketMetadata], tx_buffer: &'a mut [u8], ) -> Self
Create a new Raw socket using the provided stack and buffers.
Sourcepub async fn wait_recv_ready(&self)
pub async fn wait_recv_ready(&self)
Wait until the socket becomes readable.
A socket is readable when a packet has been received, or when there are queued packets in the buffer.
Sourcepub async fn recv(&self, buf: &mut [u8]) -> Result<usize, RecvError>
pub async fn recv(&self, buf: &mut [u8]) -> Result<usize, RecvError>
Receive a datagram.
This method will wait until a datagram is received.
Sourcepub fn poll_recv_ready(&self, cx: &mut Context<'_>) -> Poll<()>
pub fn poll_recv_ready(&self, cx: &mut Context<'_>) -> Poll<()>
Wait until a datagram can be read.
When no datagram is readable, this method will return Poll::Pending
and
register the current task to be notified when a datagram is received.
When a datagram is received, this method will return Poll::Ready
.
Sourcepub fn poll_recv(
&self,
buf: &mut [u8],
cx: &mut Context<'_>,
) -> Poll<Result<usize, RecvError>>
pub fn poll_recv( &self, buf: &mut [u8], cx: &mut Context<'_>, ) -> Poll<Result<usize, RecvError>>
Receive a datagram.
When no datagram is available, this method will return Poll::Pending
and
register the current task to be notified when a datagram is received.
Sourcepub async fn wait_send_ready(&self)
pub async fn wait_send_ready(&self)
Wait until the socket becomes writable.
A socket becomes writable when there is space in the buffer, from initial memory or after dispatching datagrams on a full buffer.
Sourcepub fn poll_send_ready(&self, cx: &mut Context<'_>) -> Poll<()>
pub fn poll_send_ready(&self, cx: &mut Context<'_>) -> Poll<()>
Wait until a datagram can be sent.
When no datagram can be sent (i.e. the buffer is full), this method will return
Poll::Pending
and register the current task to be notified when
space is freed in the buffer after a datagram has been dispatched.
When a datagram can be sent, this method will return Poll::Ready
.
Sourcepub async fn send(&self, buf: &[u8])
pub async fn send(&self, buf: &[u8])
Send a datagram.
This method will wait until the datagram has been sent.`
Sourcepub fn poll_send(&self, buf: &[u8], cx: &mut Context<'_>) -> Poll<()>
pub fn poll_send(&self, buf: &[u8], cx: &mut Context<'_>) -> Poll<()>
Send a datagram.
When the datagram has been sent, this method will return Poll::Ready(Ok())
.
When the socket’s send buffer is full, this method will return Poll::Pending
and register the current task to be notified when the buffer has space available.