Skip to main content

HeadlessObserver

Struct HeadlessObserver 

Source
pub struct HeadlessObserver { /* private fields */ }
Expand description

A headless RunObserver: captures lifecycle + log into an outcome, draws nothing. Each concurrent execution gets its own, so events route here via the task-local context (observer::global_observer() resolves to it) and never to a shared global.

Implementations§

Source§

impl HeadlessObserver

Source

pub fn new() -> Self

Trait Implementations§

Source§

impl Default for HeadlessObserver

Source§

fn default() -> Self

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

impl RunObserver for HeadlessObserver

Source§

fn phase_starting( &self, _scene_node_id: SceneNodeId, _name: &str, _labels: &str, _ops: usize, _cycles: u64, _conc: usize, )

A phase is about to start executing. Read more
Source§

fn phase_completed( &self, _scene_node_id: SceneNodeId, name: &str, labels: &str, duration_secs: f64, )

A phase completed successfully. scene_node_id keys the node to flip (see Self::phase_starting).
Source§

fn phase_failed( &self, _scene_node_id: SceneNodeId, name: &str, labels: &str, error: &str, )

A phase failed. scene_node_id keys the node to flip (see Self::phase_starting).
Source§

fn phase_progress(&self, _update: &PhaseProgressUpdate)

Update live metrics for the active phase (called at progress tick rate).
Source§

fn run_finished(&self)

The entire run is complete.
Source§

fn log(&self, _level: LogLevel, message: &str)

Diagnostic log message. Routed to stderr in CLI mode, to a ring buffer in TUI mode. All eprintln! in the runtime should go through this instead.
Source§

fn sysmon_update(&self, _sample: &SysmonSample)

A completed sysmon sample window (session-level host utilization). Display surfaces override; everything else ignores it.
Source§

fn session_dir_ready(&self, _dir: &Path)

The session directory now exists. Display surfaces that persist a transcript open it here — the runner creates the directory well after the observer is built, so this is the first moment the path is known.
Source§

fn op_starting(&self, _parent_phase: SceneNodeId, _op_name: &str)

SRD-63 — an op-level execution leaf became visible (readout: visible, enabled by the readout wrapper). Nests under parent_phase in the hierarchic status view; the consumer assigns its sequence within the phase from arrival order. Default no-op so observers that don’t render op-level leaves (and the zero-cost non-readout path) are unaffected.
Source§

fn op_completed( &self, _parent_phase: SceneNodeId, _op_name: &str, _duration_secs: f64, )

An op-level execution leaf completed. duration_secs is the op’s own cumulative execution time. Default no-op.
Source§

fn op_measure(&self, _parent_phase: SceneNodeId, _op_name: &str, _text: &str)

The op’s KEY MEASURABLE, rendered from its measure: template at completion — “12 sstables”, “1.4 GiB”, “98.1%”. Read more
Source§

fn op_failed(&self, _parent_phase: SceneNodeId, _op_name: &str, _error: &str)

An op-level execution leaf failed. Default no-op.
Source§

fn phase_render_attach(&self, _handle: PhaseRenderHandle)

SRD-100 P2 — attach the per-phase PhaseRenderHandle to the live display fold, once, after the activity’s metrics/binder exist (the executor calls this on-task at progress-setup time). Observers that own a run-state actor (TUI / log-only) route it to an AttachPhaseRender mutation so the consumer can fold active_phases and re-derive each phase’s status line itself; the no-op default is correct for surfaces with no live status fold (Stderr / Headless).
Source§

fn log_tagged(&self, level: LogLevel, _tag: EventTag, message: &str)

Log a message carrying an explicit EventTag. The default ignores the tag and delegates to Self::log — correct for every observer whose surface treats all events alike. Observers that feed a tag-aware sink (the run-state actor ring) override this to retain both axes.
Source§

fn suppresses_stderr(&self) -> bool

Whether to suppress the inline stderr progress line (because the TUI is handling display).
Source§

fn live_suppress_flag(&self) -> Option<Arc<AtomicBool>>

Optional shared flag mirroring Self::suppresses_stderr that the runner threads into long-lived components (e.g. the activity’s inline status thread) so they can react to dismissal mid-run rather than honoring a snapshot taken at construction. When None, the activity uses a fresh AtomicBool(false) (never suppress). Implementations that go through a TUI (and only those) typically expose their internal “tui_active” flag here.
Source§

fn reporter(&self) -> Option<Box<dyn Reporter>>

Optional reporter to register on the metrics scheduler. The runner calls this once during setup. Return None for observers that don’t need metrics frames (like StderrObserver). Read more
Source§

fn reporters(&self) -> Vec<(Duration, Box<dyn Reporter>)>

Multiple reporters with explicit cadences. The runner calls this once during setup. Each (interval, reporter) entry is registered with the scheduler at that interval. The default implementation returns whatever [reporter] produced at the base 1s cadence, so existing observers work unchanged.
Source§

fn cadences(&self) -> Option<Cadences>

User-declared cadences for this observer’s consumers (SRD-42). Read more
Source§

fn on_metrics_query(&self, _query: Arc<MetricsQuery>)

Callback invoked once the runner has built the shared nmbrs_metrics::metrics_query::MetricsQuery. Observers that render metrics (TUI, CLI status) capture this handle to read cadence windows, now values, and session-lifetime aggregates.
Source§

fn scenario_pre_mapped(&self, _tree: &SceneTree)

Pre-populated scenario tree. 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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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