pub struct SessionStats {
pub objects_seen: u64,
pub objects_dropped: u64,
pub objects_expired: u64,
pub streams_reset: u64,
pub bytes_shaped: u64,
}Expand description
What every session this proxy has run did, added up — the flat form of
ProxyStats.
Every field is derived at snapshot time, from ProxyStats::per_leg
or from the class rows, so it cannot drift from the figures beside it.
The two arrival cells are what the totals below are summed from — the two
points a byte enters this proxy, where each byte is counted exactly once.
Summing all four cells would count every byte twice, once where it was
read and once where it was written.
§Every field here has a producer, and the three that did not are gone
Every figure is derived at snapshot time from the per-leg cells and the
class rows, and those are written only by the shaping path. So a figure
counting something a hook does — which needs no
ShapeProfile, while everything here is gated on
one — could not have been a complete count in this type however it was
wired, and two of the three were exactly that. Self::objects_dropped
below already said where that kind of figure lives: an object a hook
elided is counted on Counters, and a
unit a hook delayed and an object it truncated are counted beside it
there now. The third was a Duration total; see ClassStats for why
no statistic on this page is one.
Fields§
§objects_seen: u64Hook-visible units the classifier saw, over every session. Objects
only, for the reason ShapeStats::objects_seen gives.
objects_dropped: u64Objects discarded by a policy, summed over every class row.
Today that means Overflow::DropTail
and nothing else: an object a hook elided is the hook’s decision
rather than the shaper’s and is counted by
Counters::objects_elided
on the session that ran the hook.
objects_expired: u64Objects whose max_hold elapsed under
Expiry::ResetStream. Zero under the
default Expiry::Deliver, which has no
producer — correctly, because that arm delivers the object instead.
streams_reset: u64Destination streams abandoned by an overflow or expiry policy.
Shaping only. A stream reset by a hook, by a peer, or by a mirrored
teardown is not counted here — those are not decisions this profile
took, and folding them in would make a configured
Overflow::ResetStream impossible to
distinguish from a client that went away.
bytes_shaped: u64Bytes the shaper accounted for — every byte it saw, whether a bucket granted it, a policy dropped it, or it was unshapeable.
Trait Implementations§
Source§impl Clone for SessionStats
impl Clone for SessionStats
Source§fn clone(&self) -> SessionStats
fn clone(&self) -> SessionStats
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more