pub struct TokioUdp;Expand description
UDP stream entry points backed by tokio::net::UdpSocket.
Implementations§
Source§impl TokioUdp
impl TokioUdp
Sourcepub fn bind<A>(
addr: A,
max_datagram_size: usize,
receive_buffer: usize,
) -> Source<Datagram, StreamCompletion<UdpBinding>>
pub fn bind<A>( addr: A, max_datagram_size: usize, receive_buffer: usize, ) -> Source<Datagram, StreamCompletion<UdpBinding>>
Binds an unconnected UDP socket and emits received datagrams.
The socket is bound when the source is materialized and first pulled.
Each successful recv_from produces exactly one Datagram, preserving
datagram boundaries. Datum buffers at most receive_buffer datagrams in
process; when that buffer is full, newly received datagrams are dropped.
UDP itself may also drop datagrams before Datum sees them.
Sourcepub fn bind_default<A>(
addr: A,
) -> Source<Datagram, StreamCompletion<UdpBinding>>
pub fn bind_default<A>( addr: A, ) -> Source<Datagram, StreamCompletion<UdpBinding>>
Binds an unconnected UDP socket using the default datagram size and receive buffer.
Sourcepub fn send_sink<A>(local_addr: A) -> Sink<Datagram, StreamCompletion<NotUsed>>
pub fn send_sink<A>(local_addr: A) -> Sink<Datagram, StreamCompletion<NotUsed>>
Creates a sink that binds local_addr and sends each upstream datagram
to its Datagram::remote with one send_to call.
A send failure fails the stream with StreamError. Successful sends
only mean the datagram was handed to the operating system; UDP provides
no delivery acknowledgement.
Sourcepub fn bind_flow<A>(
addr: A,
max_datagram_size: usize,
receive_buffer: usize,
) -> Flow<Datagram, Datagram, StreamCompletion<UdpBinding>>
pub fn bind_flow<A>( addr: A, max_datagram_size: usize, receive_buffer: usize, ) -> Flow<Datagram, Datagram, StreamCompletion<UdpBinding>>
Binds a UDP socket as a bidirectional datagram flow.
Network datagrams are emitted downstream as Datagram values.
Upstream datagrams are sent through the same socket to their remote
addresses. This mirrors the Pekko Connectors bindFlow echo-server
shape while preserving UDP’s lossy, bounded-buffer semantics.
Sourcepub fn bind_flow_default<A>(
addr: A,
) -> Flow<Datagram, Datagram, StreamCompletion<UdpBinding>>
pub fn bind_flow_default<A>( addr: A, ) -> Flow<Datagram, Datagram, StreamCompletion<UdpBinding>>
Binds a UDP bidirectional flow using default datagram size and receive buffer.
Sourcepub fn connect<A, P>(
local_addr: A,
peer: P,
max_datagram_size: usize,
receive_buffer: usize,
) -> Flow<Vec<u8>, Vec<u8>, StreamCompletion<UdpConnection>>where
A: ToSocketAddrs + Clone + Send + Sync + 'static,
P: ToSocketAddrs + Clone + Send + Sync + 'static,
pub fn connect<A, P>(
local_addr: A,
peer: P,
max_datagram_size: usize,
receive_buffer: usize,
) -> Flow<Vec<u8>, Vec<u8>, StreamCompletion<UdpConnection>>where
A: ToSocketAddrs + Clone + Send + Sync + 'static,
P: ToSocketAddrs + Clone + Send + Sync + 'static,
Binds a UDP socket, connects it to peer, and exchanges byte payloads.
Connected UDP still uses datagrams and still provides no reliability.
The connection only fixes the peer used by send/recv and lets the OS
filter datagrams from other remotes. One upstream Vec<u8> maps to one
UDP send and one socket recv maps to one downstream Vec<u8>.
Sourcepub fn connect_default<A, P>(
local_addr: A,
peer: P,
) -> Flow<Vec<u8>, Vec<u8>, StreamCompletion<UdpConnection>>where
A: ToSocketAddrs + Clone + Send + Sync + 'static,
P: ToSocketAddrs + Clone + Send + Sync + 'static,
pub fn connect_default<A, P>(
local_addr: A,
peer: P,
) -> Flow<Vec<u8>, Vec<u8>, StreamCompletion<UdpConnection>>where
A: ToSocketAddrs + Clone + Send + Sync + 'static,
P: ToSocketAddrs + Clone + Send + Sync + 'static,
Creates a connected UDP flow using default datagram size and receive buffer.