pub enum ComponentStatus {
Starting,
Running,
Stopping,
Stopped,
Error,
}Expand description
Component status type for monitoring component states Execution status of a Drasi component
ComponentStatus represents the current lifecycle state of sources, queries, and reactions.
Components transition through these states during their lifecycle, from creation through
execution to shutdown.
§Status Lifecycle
A typical component lifecycle follows this progression:
Stopped → Starting → Running → Stopping → Stopped
↓
Error§Status Values
- Starting: Component is initializing (connecting to resources, loading data, etc.)
- Running: Component is actively processing (ingesting, querying, or delivering)
- Stopping: Component is shutting down gracefully
- Stopped: Component is not running (initial or final state)
- Error: Component encountered an error and cannot continue (see error_message)
§Usage
Status is available through runtime information methods on DrasiLib:
And through runtime info structs:
§Examples
§Monitoring Component Status
use drasi_lib::{DrasiLib, ComponentStatus};
let core = DrasiLib::builder().with_id("my-server").build().await?;
core.start().await?;
// Check source status
let source_status = core.get_source_status("orders_db").await?;
match source_status {
ComponentStatus::Running => println!("Source is running"),
ComponentStatus::Error => println!("Source has errors"),
ComponentStatus::Starting => println!("Source is starting up"),
_ => println!("Source status: {:?}", source_status),
}
// Get detailed info with status
let source_info = core.get_source_info("orders_db").await?;
if source_info.status == ComponentStatus::Error {
if let Some(error) = source_info.error_message {
eprintln!("Error: {}", error);
}
}§Waiting for Component to Start
use drasi_lib::{DrasiLib, ComponentStatus};
use tokio::time::{sleep, Duration};
let core = DrasiLib::builder().with_id("my-server").build().await?;
core.start_source("orders_db").await?;
// Poll until source is running
loop {
let status = core.get_source_status("orders_db").await?;
match status {
ComponentStatus::Running => break,
ComponentStatus::Error => return Err("Source failed to start".into()),
_ => sleep(Duration::from_millis(100)).await,
}
}
println!("Source is now running");§Checking All Components
use drasi_lib::{DrasiLib, ComponentStatus};
let core = DrasiLib::builder().with_id("my-server").build().await?;
core.start().await?;
// Check all sources
let sources = core.list_sources().await?;
for (id, status) in sources {
println!("Source {}: {:?}", id, status);
}
// Check all queries
let queries = core.list_queries().await?;
for (id, status) in queries {
println!("Query {}: {:?}", id, status);
}
// Check all reactions
let reactions = core.list_reactions().await?;
for (id, status) in reactions {
println!("Reaction {}: {:?}", id, status);
}Variants§
Trait Implementations§
Source§impl Clone for ComponentStatus
impl Clone for ComponentStatus
Source§fn clone(&self) -> ComponentStatus
fn clone(&self) -> ComponentStatus
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ComponentStatus
impl Debug for ComponentStatus
Source§impl<'de> Deserialize<'de> for ComponentStatus
impl<'de> Deserialize<'de> for ComponentStatus
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl PartialEq for ComponentStatus
impl PartialEq for ComponentStatus
Source§impl Serialize for ComponentStatus
impl Serialize for ComponentStatus
impl StructuralPartialEq for ComponentStatus
Auto Trait Implementations§
impl Freeze for ComponentStatus
impl RefUnwindSafe for ComponentStatus
impl Send for ComponentStatus
impl Sync for ComponentStatus
impl Unpin for ComponentStatus
impl UnwindSafe for ComponentStatus
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more