Skip to main content

ComponentStatusHandle

Struct ComponentStatusHandle 

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

A clonable handle for reading, writing, and reporting component status.

ComponentStatusHandle owns the component’s local status (Arc<RwLock<ComponentStatus>>) and the mpsc sender to the graph update loop. This means a single cloned handle is all a spawned task needs to both read the current status and update it (with automatic graph notification).

§Obtaining a handle

Source and reaction plugins obtain this from their base class:

let handle = self.base.status_handle();

§Usage in spawned tasks

let handle = self.base.status_handle();
tokio::spawn(async move {
    let current = handle.get_status().await;
    if let Err(e) = do_work().await {
        handle.set_status(ComponentStatus::Error, Some(format!("Failed: {e}"))).await;
    }
});

Implementations§

Source§

impl ComponentStatusHandle

Source

pub fn new(component_id: impl Into<String>) -> Self

Create a handle without a graph channel.

The handle is fully functional for local status reads/writes immediately. Call [wire] later to connect to the graph update loop.

Source

pub fn new_wired( component_id: impl Into<String>, update_tx: ComponentUpdateSender, ) -> Self

Create a handle already connected to the graph update loop.

Use this when the update channel is available at construction time (e.g., in QueryManager where queries are created with full context).

Source

pub async fn wire(&self, update_tx: ComponentUpdateSender)

Connect this handle to the graph update loop.

After wiring, every set_status call will also send a fire-and-forget notification to the graph.

Source

pub async fn set_status(&self, status: ComponentStatus, message: Option<String>)

Set the component’s status — updates local state AND notifies the graph.

This is the single canonical way to change a component’s status. It writes to the local Arc<RwLock<ComponentStatus>> and sends the update to the graph update loop (if wired). The send awaits backpressure if the channel is full, ensuring status transitions are never silently dropped.

Source

pub async fn get_status(&self) -> ComponentStatus

Read the current status.

Trait Implementations§

Source§

impl Clone for ComponentStatusHandle

Source§

fn clone(&self) -> ComponentStatusHandle

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. 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> 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> 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> 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 = 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.
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