Trait embedded_nal::UdpClientStack[][src]

pub trait UdpClientStack {
    type UdpSocket;
    type Error: Debug;
    fn socket(&mut self) -> Result<Self::UdpSocket, Self::Error>;
fn connect(
        &mut self,
        socket: &mut Self::UdpSocket,
        remote: SocketAddr
    ) -> Result<(), Self::Error>;
fn send(
        &mut self,
        socket: &mut Self::UdpSocket,
        buffer: &[u8]
    ) -> Result<(), Self::Error>;
fn receive(
        &mut self,
        socket: &mut Self::UdpSocket,
        buffer: &mut [u8]
    ) -> Result<(usize, SocketAddr), Self::Error>;
fn close(&mut self, socket: Self::UdpSocket) -> Result<(), Self::Error>; }
Expand description

This trait is implemented by UDP/IP stacks. You could, for example, have an implementation which knows how to send AT commands to an ESP8266 WiFi module. You could have another implementation which knows how to driver the Rust Standard Library’s std::net module. Given this trait, you can how write a portable CoAP client which can work with either implementation.

Associated Types

type UdpSocket[src]

The type returned when we create a new UDP socket

type Error: Debug[src]

The type returned when we have an error

Required methods

fn socket(&mut self) -> Result<Self::UdpSocket, Self::Error>[src]

Allocate a socket for further use.

fn connect(
    &mut self,
    socket: &mut Self::UdpSocket,
    remote: SocketAddr
) -> Result<(), Self::Error>
[src]

Connect a UDP socket with a peer using a dynamically selected port.

Selects a port number automatically and initializes for read/writing.

fn send(
    &mut self,
    socket: &mut Self::UdpSocket,
    buffer: &[u8]
) -> Result<(), Self::Error>
[src]

Send a datagram to the remote host.

The remote host used is either the one specified in UdpStack::connect or the last one used in UdpServerStack::write_to.

fn receive(
    &mut self,
    socket: &mut Self::UdpSocket,
    buffer: &mut [u8]
) -> Result<(usize, SocketAddr), Self::Error>
[src]

Read a datagram the remote host has sent to us.

Returns Ok((n, remote)), which means a datagram of size n has been received from remote and been placed in &buffer[0..n], or an error. If a packet has not been received when called, then nb::Error::WouldBlock should be returned.

fn close(&mut self, socket: Self::UdpSocket) -> Result<(), Self::Error>[src]

Close an existing UDP socket.

Implementors

impl<'a, T> UdpClientStack for SharedStack<'a, T> where
    T: UdpClientStack
[src]

type Error = T::Error

type UdpSocket = T::UdpSocket

fn socket(&mut self) -> Result<Self::UdpSocket, Self::Error>[src]

fn connect(
    &mut self,
    socket: &mut Self::UdpSocket,
    address: SocketAddr
) -> Result<(), Self::Error>
[src]

fn send(
    &mut self,
    socket: &mut Self::UdpSocket,
    data: &[u8]
) -> Result<(), Error<<T as UdpClientStack>::Error>>
[src]

fn receive(
    &mut self,
    socket: &mut Self::UdpSocket,
    data: &mut [u8]
) -> Result<(usize, SocketAddr), Error<<T as UdpClientStack>::Error>>
[src]

fn close(&mut self, socket: Self::UdpSocket) -> Result<(), Self::Error>[src]