Skip to main content

SubMonitorCell

Struct SubMonitorCell 

Source
pub struct SubMonitorCell {
    pub max_age_ms: AtomicU32,
    pub takes: AtomicU32,
    pub deadline_slot: AtomicU32,
    pub arrivals: 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.

§deadline_slot: AtomicU32

phase-462 W5b – the executor slot + 1 whose readiness is this endpoint’s arrival evidence, set when the contract’s deadline is judged here rather than by the backend (admit_contract_deadline). 0 = not armed: the backend judges the deadline, or none is declared.

§arrivals: AtomicU32

phase-462 W5b – spins on which the armed slot had data, drained by check_age. Counted for ANY message type, stamped or not, because a deadline is a promise about arrival and says nothing about stamps.

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.

Source

pub fn observe_unaged(&self)

Issue 2215 – a stamped take on an image with NO epoch source: the stamp was read (the type carries one and it is a real time), so the take is the silence rule’s evidence exactly as Self::observe’s is, but its age cannot be computed against a clock that is not on the stamp’s epoch, so max_age_ms is left alone and max-age-runtime judges nothing on such an image. An unstamped take is still not evidence: nothing here counts arrivals.

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.