Struct UdpSocketConfig
pub struct UdpSocketConfig { /* private fields */ }std and udp only.Expand description
Configuration shared by UDP packet-socket factories.
Implementations§
§impl UdpSocketConfig
impl UdpSocketConfig
pub fn new() -> UdpSocketConfig
pub fn new() -> UdpSocketConfig
Construct default UDP socket configuration.
pub fn with_socket_options(self, options: SocketOptions) -> UdpSocketConfig
pub fn with_socket_options(self, options: SocketOptions) -> UdpSocketConfig
Replace Rama’s general platform socket options.
The address supplied to bind takes precedence over options.address.
On Apple platforms the packet adapter can raise an explicitly small
send buffer to avoid a kernel sendmsg ancillary-data defect.
pub fn set_socket_options(
&mut self,
options: SocketOptions,
) -> &mut UdpSocketConfig
pub fn set_socket_options( &mut self, options: SocketOptions, ) -> &mut UdpSocketConfig
Replace Rama’s general platform socket options.
The address supplied to bind takes precedence over options.address.
On Apple platforms the packet adapter can raise an explicitly small
send buffer to avoid a kernel sendmsg ancillary-data defect.
pub fn socket_options(&self) -> &SocketOptions
pub fn socket_options(&self) -> &SocketOptions
Inspect the general platform socket options.
pub fn required_features(&self) -> &[DatagramFeature]
pub fn required_features(&self) -> &[DatagramFeature]
Features that socket creation must provide.
pub fn wrap_core(
&self,
socket: Socket,
) -> Result<UdpPacketSocket, DatagramError>
pub fn wrap_core( &self, socket: Socket, ) -> Result<UdpPacketSocket, DatagramError>
Wrap a socket the caller bound, as if this configuration had created it.
Only the packet metadata this configuration asks for is set up, and the features it
requires are validated; socket options the caller applied are left as they are and none of
this configuration’s SocketOptions are applied to an already bound socket. A socket
whose capabilities do not meet a required feature is refused, and the socket is dropped
with the error rather than returned.
pub fn wrap_std(
&self,
socket: UdpSocket,
) -> Result<UdpPacketSocket, DatagramError>
pub fn wrap_std( &self, socket: UdpSocket, ) -> Result<UdpPacketSocket, DatagramError>
The same for a standard socket. See wrap_core.
pub fn wrap_tokio(
&self,
socket: UdpSocket,
) -> Result<UdpPacketSocket, DatagramError>
pub fn wrap_tokio( &self, socket: UdpSocket, ) -> Result<UdpPacketSocket, DatagramError>
The same for a Tokio socket. See wrap_core.
The socket is already registered with the runtime by its owner, which is also who put it in
non-blocking mode: tokio::net::UdpSocket::from_std requires that of its caller and does
not do it. Only the metadata setup happens here.
pub fn with_receive_original_destination(self, enabled: bool) -> UdpSocketConfig
pub fn with_receive_original_destination(self, enabled: bool) -> UdpSocketConfig
Enable transparent-proxy original-destination metadata when supported.
pub fn set_receive_original_destination(
&mut self,
enabled: bool,
) -> &mut UdpSocketConfig
pub fn set_receive_original_destination( &mut self, enabled: bool, ) -> &mut UdpSocketConfig
Enable transparent-proxy original-destination metadata when supported.
pub fn maybe_with_min_buffer_size(self, bytes: Option<usize>) -> UdpSocketConfig
pub fn maybe_with_min_buffer_size(self, bytes: Option<usize>) -> UdpSocketConfig
Ask for at least this many bytes of kernel receive and send buffer (SO_RCVBUF,
SO_SNDBUF) on the sockets this configuration binds, as far as the platform allows.
A platform limit (net.core.rmem_max on Linux, kern.ipc.maxsockbuf on macOS) caps
the request without failing the bind; on Linux the cap is lifted with the *FORCE
options when the process holds CAP_NET_ADMIN. A buffer given an explicit size in
SocketOptions is left to that size. Wrapped sockets are not resized.
pub fn maybe_set_min_buffer_size(
&mut self,
bytes: Option<usize>,
) -> &mut UdpSocketConfig
pub fn maybe_set_min_buffer_size( &mut self, bytes: Option<usize>, ) -> &mut UdpSocketConfig
Ask for at least this many bytes of kernel receive and send buffer (SO_RCVBUF,
SO_SNDBUF) on the sockets this configuration binds, as far as the platform allows.
A platform limit (net.core.rmem_max on Linux, kern.ipc.maxsockbuf on macOS) caps
the request without failing the bind; on Linux the cap is lifted with the *FORCE
options when the process holds CAP_NET_ADMIN. A buffer given an explicit size in
SocketOptions is left to that size. Wrapped sockets are not resized.
pub fn with_min_buffer_size(self, bytes: usize) -> UdpSocketConfig
pub fn with_min_buffer_size(self, bytes: usize) -> UdpSocketConfig
Ask for at least this many bytes of kernel receive and send buffer (SO_RCVBUF,
SO_SNDBUF) on the sockets this configuration binds, as far as the platform allows.
A platform limit (net.core.rmem_max on Linux, kern.ipc.maxsockbuf on macOS) caps
the request without failing the bind; on Linux the cap is lifted with the *FORCE
options when the process holds CAP_NET_ADMIN. A buffer given an explicit size in
SocketOptions is left to that size. Wrapped sockets are not resized.
pub fn set_min_buffer_size(&mut self, bytes: usize) -> &mut UdpSocketConfig
pub fn set_min_buffer_size(&mut self, bytes: usize) -> &mut UdpSocketConfig
Ask for at least this many bytes of kernel receive and send buffer (SO_RCVBUF,
SO_SNDBUF) on the sockets this configuration binds, as far as the platform allows.
A platform limit (net.core.rmem_max on Linux, kern.ipc.maxsockbuf on macOS) caps
the request without failing the bind; on Linux the cap is lifted with the *FORCE
options when the process holds CAP_NET_ADMIN. A buffer given an explicit size in
SocketOptions is left to that size. Wrapped sockets are not resized.
pub fn without_min_buffer_size(self) -> UdpSocketConfig
pub fn without_min_buffer_size(self) -> UdpSocketConfig
Ask for at least this many bytes of kernel receive and send buffer (SO_RCVBUF,
SO_SNDBUF) on the sockets this configuration binds, as far as the platform allows.
A platform limit (net.core.rmem_max on Linux, kern.ipc.maxsockbuf on macOS) caps
the request without failing the bind; on Linux the cap is lifted with the *FORCE
options when the process holds CAP_NET_ADMIN. A buffer given an explicit size in
SocketOptions is left to that size. Wrapped sockets are not resized.
pub fn unset_min_buffer_size(&mut self) -> &mut UdpSocketConfig
pub fn unset_min_buffer_size(&mut self) -> &mut UdpSocketConfig
Ask for at least this many bytes of kernel receive and send buffer (SO_RCVBUF,
SO_SNDBUF) on the sockets this configuration binds, as far as the platform allows.
A platform limit (net.core.rmem_max on Linux, kern.ipc.maxsockbuf on macOS) caps
the request without failing the bind; on Linux the cap is lifted with the *FORCE
options when the process holds CAP_NET_ADMIN. A buffer given an explicit size in
SocketOptions is left to that size. Wrapped sockets are not resized.
pub fn min_buffer_size(&self) -> Option<usize>
pub fn min_buffer_size(&self) -> Option<usize>
The buffer floor Self::with_min_buffer_size asks for.
pub fn with_required_feature(self, feature: DatagramFeature) -> UdpSocketConfig
pub fn with_required_feature(self, feature: DatagramFeature) -> UdpSocketConfig
Require feature, failing socket creation when it is unavailable.
pub fn set_required_feature(
&mut self,
feature: DatagramFeature,
) -> &mut UdpSocketConfig
pub fn set_required_feature( &mut self, feature: DatagramFeature, ) -> &mut UdpSocketConfig
Require feature, failing socket creation when it is unavailable.
Trait Implementations§
§impl Clone for UdpSocketConfig
impl Clone for UdpSocketConfig
§fn clone(&self) -> UdpSocketConfig
fn clone(&self) -> UdpSocketConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for UdpSocketConfig
impl Debug for UdpSocketConfig
§impl Default for UdpSocketConfig
impl Default for UdpSocketConfig
§fn default() -> UdpSocketConfig
fn default() -> UdpSocketConfig
Auto Trait Implementations§
impl Freeze for UdpSocketConfig
impl RefUnwindSafe for UdpSocketConfig
impl Send for UdpSocketConfig
impl Sync for UdpSocketConfig
impl Unpin for UdpSocketConfig
impl UnsafeUnpin for UdpSocketConfig
impl UnwindSafe for UdpSocketConfig
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§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> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a rama_grpc::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more