pub struct DiscardCounts {
pub transaction_events: u64,
pub unanswered: u64,
pub no_destination: u64,
pub send_failures: u64,
pub stun_unmatched: u64,
}Expand description
Places the endpoint throws something away that are not backpressure (§12.1).
Each of these was a let _ = … or a bare tracing line before X-18. None is necessarily a
fault — most are the correct handling of something unwanted — but every one of them used to be
invisible, and “how often” is not a question anyone should answer with grep | wc -l.
Fields§
§transaction_events: u64Events for a client transaction whose application receiver was full or gone.
The serious one here. A dropped response event means an application that asked for a transaction’s outcome does not learn it, and nothing retransmits an event.
unanswered: u64Server transactions abandoned because the application never answered them.
An application bug rather than a network one, which is exactly why it needs its own number: nothing on the wire will show it.
no_destination: u64Messages a transaction wanted sent that had no destination to send them to.
send_failures: u64Sends the transport refused.
The transaction is given a transport error, so this is not silent loss — but the rate is worth having, because a peer that has become unreachable shows up here first.
stun_unmatched: u64STUN replies that matched no keep-alive, and STUN messages that were not replies.
RFC 5389 §6 wants the transaction ID unguessable precisely so a forged reply cannot be matched; a rising count here is either a broken peer or someone trying.
Implementations§
Trait Implementations§
Source§impl Clone for DiscardCounts
impl Clone for DiscardCounts
Source§fn clone(&self) -> DiscardCounts
fn clone(&self) -> DiscardCounts
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DiscardCounts
impl Debug for DiscardCounts
Source§impl Default for DiscardCounts
impl Default for DiscardCounts
Source§fn default() -> DiscardCounts
fn default() -> DiscardCounts
Source§impl PartialEq for DiscardCounts
impl PartialEq for DiscardCounts
Source§fn eq(&self, other: &DiscardCounts) -> bool
fn eq(&self, other: &DiscardCounts) -> bool
self and other values to be equal, and is used by ==.impl Copy for DiscardCounts
impl Eq for DiscardCounts
impl StructuralPartialEq for DiscardCounts
Auto Trait Implementations§
impl Freeze for DiscardCounts
impl RefUnwindSafe for DiscardCounts
impl Send for DiscardCounts
impl Sync for DiscardCounts
impl Unpin for DiscardCounts
impl UnsafeUnpin for DiscardCounts
impl UnwindSafe for DiscardCounts
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§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