Skip to main content

SubMonitorCell

Struct SubMonitorCell 

Source
pub struct SubMonitorCell {
    pub max_age_ms: AtomicU32,
    pub takes: AtomicU32,
}
Expand description

One contracted subscriber’s take-age accumulator (W3b.5). The take path records epoch_now - header.stamp per message (fetch_max); the age check drains it (swap 0) per window.

Fields§

§max_age_ms: AtomicU32

Max observed take-age (ms) in the current check window.

§takes: AtomicU32

phase-462 W2 – observations recorded since the last check, drained (swap 0) by check_age. The age itself cannot answer “did anything arrive”: a window with no take and a window whose only take was perfectly fresh both leave max_age_ms at 0.

Implementations§

Source§

impl SubMonitorCell

Source

pub const fn new() -> SubMonitorCell

Source

pub fn observe(&self, stamp_us: u64, epoch_now_us: u64)

Take-path hook: record one message’s age. stamp_us is the peeked header.stamp as µs since the UNIX epoch, epoch_now_us the receive-side wall clock. A stamp from the future clamps to 0.

phase-462 W2 – also the silence rule’s only evidence that this endpoint is being fed. It counts what the AGE rule can see, which is stamped takes on a type that carries a stamp: a contracted endpoint whose messages carry no readable stamp records nothing here and is reported silent. That is the intended verdict rather than a gap – its max_age_ms cannot be judged either, and an unjudgeable promise reported as met is the silent class this phase exists to remove.

Trait Implementations§

Source§

impl Debug for SubMonitorCell

Source§

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

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

impl Default for SubMonitorCell

Source§

fn default() -> SubMonitorCell

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

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.