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
impl ComponentStatusHandle
Sourcepub fn new(component_id: impl Into<String>) -> Self
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.
Sourcepub fn new_wired(
component_id: impl Into<String>,
update_tx: ComponentUpdateSender,
) -> Self
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).
Sourcepub async fn wire(&self, update_tx: ComponentUpdateSender)
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.
Sourcepub async fn set_status(&self, status: ComponentStatus, message: Option<String>)
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.
Sourcepub async fn get_status(&self) -> ComponentStatus
pub async fn get_status(&self) -> ComponentStatus
Read the current status.
Trait Implementations§
Source§impl Clone for ComponentStatusHandle
impl Clone for ComponentStatusHandle
Source§fn clone(&self) -> ComponentStatusHandle
fn clone(&self) -> ComponentStatusHandle
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more