Struct embassy_net::udp::UdpSocket
source · pub struct UdpSocket<'a> { /* private fields */ }
Expand description
An UDP socket.
Implementations§
source§impl<'a> UdpSocket<'a>
impl<'a> UdpSocket<'a>
sourcepub fn new<D: Driver>(
stack: &'a Stack<D>,
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: &'a Stack<D>, rx_meta: &'a mut [PacketMetadata], rx_buffer: &'a mut [u8], tx_meta: &'a mut [PacketMetadata], tx_buffer: &'a mut [u8] ) -> Self
Create a new UDP socket using the provided stack and buffers.
sourcepub fn bind<T>(&mut self, endpoint: T) -> Result<(), BindError>where
T: Into<IpListenEndpoint>,
pub fn bind<T>(&mut self, endpoint: T) -> Result<(), BindError>where
T: Into<IpListenEndpoint>,
Bind the socket to a local endpoint.
sourcepub async fn recv_from(
&self,
buf: &mut [u8]
) -> Result<(usize, UdpMetadata), RecvError>
pub async fn recv_from( &self, buf: &mut [u8] ) -> Result<(usize, UdpMetadata), RecvError>
Receive a datagram.
This method will wait until a datagram is received.
Returns the number of bytes received and the remote endpoint.
sourcepub fn poll_recv_from(
&self,
buf: &mut [u8],
cx: &mut Context<'_>
) -> Poll<Result<(usize, UdpMetadata), RecvError>>
pub fn poll_recv_from( &self, buf: &mut [u8], cx: &mut Context<'_> ) -> Poll<Result<(usize, UdpMetadata), 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.
When a datagram is received, this method will return Poll::Ready
with the
number of bytes received and the remote endpoint.
sourcepub async fn send_to<T>(
&self,
buf: &[u8],
remote_endpoint: T
) -> Result<(), SendError>where
T: Into<UdpMetadata>,
pub async fn send_to<T>(
&self,
buf: &[u8],
remote_endpoint: T
) -> Result<(), SendError>where
T: Into<UdpMetadata>,
Send a datagram to the specified remote endpoint.
This method will wait until the datagram has been sent.
When the remote endpoint is not reachable, this method will return Err(SendError::NoRoute)
sourcepub fn poll_send_to<T>(
&self,
buf: &[u8],
remote_endpoint: T,
cx: &mut Context<'_>
) -> Poll<Result<(), SendError>>where
T: Into<UdpMetadata>,
pub fn poll_send_to<T>(
&self,
buf: &[u8],
remote_endpoint: T,
cx: &mut Context<'_>
) -> Poll<Result<(), SendError>>where
T: Into<UdpMetadata>,
Send a datagram to the specified remote endpoint.
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.
When the remote endpoint is not reachable, this method will return Poll::Ready(Err(Error::NoRoute))
.
sourcepub fn endpoint(&self) -> IpListenEndpoint
pub fn endpoint(&self) -> IpListenEndpoint
Returns the local endpoint of the socket.
sourcepub fn may_send(&self) -> bool
pub fn may_send(&self) -> bool
Returns whether the socket is ready to send data, i.e. it has enough buffer space to hold a packet.
sourcepub fn may_recv(&self) -> bool
pub fn may_recv(&self) -> bool
Returns whether the socket is ready to receive data, i.e. it has received a packet that’s now in the buffer.
sourcepub fn packet_recv_capacity(&self) -> usize
pub fn packet_recv_capacity(&self) -> usize
Return the maximum number packets the socket can receive.
sourcepub fn packet_send_capacity(&self) -> usize
pub fn packet_send_capacity(&self) -> usize
Return the maximum number packets the socket can receive.
sourcepub fn payload_recv_capacity(&self) -> usize
pub fn payload_recv_capacity(&self) -> usize
Return the maximum number of bytes inside the recv buffer.
sourcepub fn payload_send_capacity(&self) -> usize
pub fn payload_send_capacity(&self) -> usize
Return the maximum number of bytes inside the transmit buffer.
sourcepub fn set_hop_limit(&mut self, hop_limit: Option<u8>)
pub fn set_hop_limit(&mut self, hop_limit: Option<u8>)
Set the hop limit field in the IP header of sent packets.