pub struct UdpStreamBuilder { /* private fields */ }
Expand description
Builder object for the ConnectedUdpStream
.
If you wish to use defaults, do UdpStreamBuilder::default().build(addr)
.
Implementations§
Source§impl UdpStreamBuilder
impl UdpStreamBuilder
Sourcepub fn with_foreign_data_mode(self, mode: ForeignDataMode) -> Self
pub fn with_foreign_data_mode(self, mode: ForeignDataMode) -> Self
Defines the behavior when data from an unexpected source arrive into the socket.
See ForeignDataMode
for details.
Default is ForeignDataMode::Error
.
Sourcepub fn with_buffer_size(self, buffer_size: usize) -> Self
pub fn with_buffer_size(self, buffer_size: usize) -> Self
The size of the UDP receive buffer.
This size must be at least the size of the MTU, otherwise the unread UDP data that does not fit this buffer will be discarded.
Default is 2048.
Sourcepub fn with_queue_size(self, queue_size: usize) -> Self
pub fn with_queue_size(self, queue_size: usize) -> Self
Size of the TX/RX queue that dispatches data of reads from/writings to the sockets.
This an important back-pressure mechanism when dispatching received data from
fast senders.
Reduces the maximum memory consumed by the object, which is given by:
buffer_size
*
queue_size
Default is unbounded.
Sourcepub fn with_receiver_parallelism<T: Into<UdpStreamParallelism>>(
self,
parallelism: T,
) -> Self
pub fn with_receiver_parallelism<T: Into<UdpStreamParallelism>>( self, parallelism: T, ) -> Self
Sets how many parallel receiving sockets should be bound.
Has no effect on non-Linux machines. See UdpStreamParallelism
for details.
Default is 1
.
Sourcepub fn with_sender_parallelism<T: Into<UdpStreamParallelism>>(
self,
parallelism: T,
) -> Self
pub fn with_sender_parallelism<T: Into<UdpStreamParallelism>>( self, parallelism: T, ) -> Self
Sets how many parallel sending sockets should be bound.
Has no effect on non-Linux machines. See UdpStreamParallelism
for details.
Default is 1
.
Sourcepub fn with_counterparty(self, counterparty: SocketAddr) -> Self
pub fn with_counterparty(self, counterparty: SocketAddr) -> Self
Sets the expected counterparty for data sent/received by the UDP sockets.
If not specified, the counterparty is determined from the first packet received. However, no data can be sent up until this point. Therefore, the value must be set if data are sent first rather than received. If data is expected to be received first, the value does not need to be set.
See ConnectedUdpStream
and ForeignDataMode
for details.
Default is none.
Sourcepub fn build<A: ToSocketAddrs>(self, bind_addr: A) -> Result<ConnectedUdpStream>
pub fn build<A: ToSocketAddrs>(self, bind_addr: A) -> Result<ConnectedUdpStream>
Builds the ConnectedUdpStream
with UDP socket(s) bound to bind_addr
.
The number of RX sockets bound is determined by receiver parallelism, and similarly, the number of TX sockets bound is determined by sender parallelism. On non-Linux platforms, only a single receiver and sender will be bound, regardless of the above.
The returned instance is always ready to receive data. It is also ready to send data if the counterparty has been set.
If bind_addr
yields multiple addresses, binding will be attempted with each of the addresses
until one succeeds. If none of the addresses succeed in binding the socket(s),
the AddrNotAvailable
error is returned.
Note that wildcard addresses (such as 0.0.0.0
) are not considered as multiple addresses,
and such socket(s) will bind to all available interfaces at the system level.
Trait Implementations§
Source§impl Clone for UdpStreamBuilder
impl Clone for UdpStreamBuilder
Source§fn clone(&self) -> UdpStreamBuilder
fn clone(&self) -> UdpStreamBuilder
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for UdpStreamBuilder
impl Debug for UdpStreamBuilder
Auto Trait Implementations§
impl Freeze for UdpStreamBuilder
impl RefUnwindSafe for UdpStreamBuilder
impl Send for UdpStreamBuilder
impl Sync for UdpStreamBuilder
impl Unpin for UdpStreamBuilder
impl UnwindSafe for UdpStreamBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.