Skip to main content

Traffic

Struct Traffic 

Source
#[non_exhaustive]
pub struct Traffic {
Show 13 fields pub announces_started: u64, pub announces_ended: u64, pub announced_bytes: u64, pub broadcasts_started: u64, pub broadcasts_ended: u64, pub subscriptions_started: u64, pub subscriptions_ended: u64, pub fetches: u64, pub bytes: u64, pub frames: u64, pub groups: u64, pub datagrams: u64, pub stale: Content,
}
Expand description

Counter collection, re-exported from moq_net::stats so stats consumers can depend on this crate alone. A cumulative traffic counter readout for one slice (a broadcast on a (tier, role), or any sum of such slices).

Every counter is cumulative, so a rate is delta / delta_t and a live count is started - ended. This is also the wire shape of one entry on a published stats track (the moq-stats crate serializes maps of these). Serialize writes both the canonical *_started/*_ended names and the legacy announced/*_closed spellings so an older consumer still reads a new relay; deserialize accepts either spelling, with the canonical name winning when both are present. Unknown fields from a newer publisher are ignored and missing fields from an older one default to zero.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§announces_started: u64

Cumulative broadcast announce events on this slice.

§announces_ended: u64

Cumulative broadcast unannounce events on this slice.

§announced_bytes: u64

Cumulative announce-control bytes: the broadcast name length summed over each announce and unannounce. Distinct from bytes (payload).

§broadcasts_started: u64

Per-(broadcast, session) subscription sentinel opens: the first active subscription a session holds on a broadcast.

§broadcasts_ended: u64

Sentinel closes: the session’s last subscription to the broadcast ended.

§subscriptions_started: u64

Cumulative track-level subscriptions opened.

§subscriptions_ended: u64

Cumulative track-level subscriptions closed.

§fetches: u64

Cumulative one-shot group fetches requested. Counted once per coalesced fetch when the fetch is issued, so one that resolves to NotFound still counts. Separate from subscriptions_started and the viewer refcount. Fetched payload still flows into bytes/frames/groups.

§bytes: u64

Cumulative payload bytes.

§frames: u64

Cumulative frames delivered.

§groups: u64

Cumulative groups delivered.

§datagrams: u64

Cumulative single-frame groups delivered over an unreliable QUIC datagram. A subset of groups: each one also counts there and its payload in frames / bytes.

§stale: Content

Content skipped because it aged past a subscriber’s max_age budget. Disjoint from the top-level payload counters: skipped content is never handed over. A steady rate here means subscribers are consistently behind the live edge.

Implementations§

Source§

impl Traffic

Source

pub fn add(&mut self, other: Traffic)

Fold another readout into this one, counter by counter.

Source

pub fn is_announced(&self) -> bool

True while the broadcast is announced (an announce guard is open).

Source

pub fn active_broadcasts(&self) -> u64

Distinct sessions currently subscribed (viewers on the egress side).

Source

pub fn active_subscriptions(&self) -> u64

Track subscriptions currently open.

Source

pub fn total_bytes(&self) -> u64

All bytes attributable to this slice: payload plus announce overhead. Both inputs are monotonic, so the sum regresses only when the entry was garbage collected and re-created.

Source

pub fn is_idle(&self) -> bool

True once every started counter equals its ended counterpart: no guard is held, so no more traffic can flow until a new start.

Trait Implementations§

Source§

impl Clone for Traffic

Source§

fn clone(&self) -> Traffic

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for Traffic

Source§

impl Debug for Traffic

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for Traffic

Source§

fn default() -> Traffic

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for Traffic

Source§

fn deserialize<D>( deserializer: D, ) -> Result<Traffic, <D as Deserializer<'de>>::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Eq for Traffic

Source§

impl From<TrafficDe> for Traffic

Source§

fn from(d: TrafficDe) -> Traffic

Converts to this type from the input type.
Source§

impl PartialEq for Traffic

Source§

fn eq(&self, other: &Traffic) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for Traffic

Source§

fn serialize<S>( &self, serializer: S, ) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Traffic

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> MaybeSend for T
where T: Send,

Source§

impl<T> MaybeSend for T
where T: Send + ?Sized,

Source§

impl<T> MaybeSend for T
where T: Send,

Source§

impl<T> MaybeSync for T
where T: Sync,

Source§

impl<T> MaybeSync for T
where T: Sync,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more