pub struct TcpInfo {
pub rtt: Option<Duration>,
pub rttvar: Option<Duration>,
pub retransmits: Option<u32>,
pub cwnd: Option<u32>,
pub snd_mss: Option<u32>,
}Expand description
Portable subset of getsockopt(TCP_INFO) exposed in the user-facing API.
Anything unmeasurable on the current OS / libc binding stays None. The
diff between a baseline and a final sample is more informative than any
single value: it isolates retransmits and cwnd movement caused by this
request.
Fields§
§rtt: Option<Duration>Smoothed round-trip time estimate.
rttvar: Option<Duration>RTT variance.
retransmits: Option<u32>Cumulative retransmitted segments observed on this connection.
Linux: locally-emitted retransmits (tcpi_total_retrans).
macOS: inbound segments seen as retransmits (tcpi_rxretransmitpackets).
Different perspectives, both surface “this connection had loss”.
cwnd: Option<u32>Congestion window in segments.
snd_mss: Option<u32>Sender-side MSS in bytes.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for TcpInfo
impl RefUnwindSafe for TcpInfo
impl Send for TcpInfo
impl Sync for TcpInfo
impl Unpin for TcpInfo
impl UnsafeUnpin for TcpInfo
impl UnwindSafe for TcpInfo
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§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
Mutably borrows from an owned value. Read more
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,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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>
Converts
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>
Converts
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request