pub struct StateTracker { /* private fields */ }Expand description
状态追踪器
实时追踪所有任务的状态,支持事件订阅
§特性
- 线程安全(使用
Arc<RwLock>) - 支持事件订阅(使用
broadcast通道) - 记录状态变更时间
- 计算运行时长
§示例
use flare_core_runtime::state::StateTracker;
use flare_core_runtime::task::TaskState;
#[tokio::main]
async fn main() {
let tracker = StateTracker::new();
// 注册任务
tracker.register_task("task-1", TaskState::Pending).await;
// 更新状态
tracker.update_state("task-1", TaskState::Starting).await;
tracker.update_state("task-1", TaskState::Running).await;
// 获取状态
let info = tracker.get_state("task-1").await.unwrap();
assert_eq!(info.state, TaskState::Running);
}Implementations§
Source§impl StateTracker
impl StateTracker
Sourcepub fn with_capacity(capacity: usize) -> Self
pub fn with_capacity(capacity: usize) -> Self
创建新的状态追踪器(指定事件缓冲区大小)
Sourcepub async fn register_task(
&self,
name: impl Into<String>,
initial_state: TaskState,
)
pub async fn register_task( &self, name: impl Into<String>, initial_state: TaskState, )
注册任务
Sourcepub async fn update_state(
&self,
name: &str,
new_state: TaskState,
) -> Option<StateEvent>
pub async fn update_state( &self, name: &str, new_state: TaskState, ) -> Option<StateEvent>
Sourcepub async fn update_state_with_error(
&self,
name: &str,
new_state: TaskState,
error: impl Into<String>,
) -> Option<StateEvent>
pub async fn update_state_with_error( &self, name: &str, new_state: TaskState, error: impl Into<String>, ) -> Option<StateEvent>
更新任务状态(带错误信息)
Sourcepub async fn get_state(&self, name: &str) -> Option<TaskStateInfo>
pub async fn get_state(&self, name: &str) -> Option<TaskStateInfo>
获取任务状态
Sourcepub async fn get_all_states(&self) -> Vec<TaskStateInfo>
pub async fn get_all_states(&self) -> Vec<TaskStateInfo>
获取所有任务状态
Sourcepub fn subscribe(&self) -> Receiver<StateEvent>
pub fn subscribe(&self) -> Receiver<StateEvent>
订阅状态事件
Sourcepub async fn has_failures(&self) -> bool
pub async fn has_failures(&self) -> bool
检查是否有任务失败
Sourcepub async fn get_failed_tasks(&self) -> Vec<String>
pub async fn get_failed_tasks(&self) -> Vec<String>
获取失败的任务
Sourcepub async fn running_count(&self) -> usize
pub async fn running_count(&self) -> usize
获取运行中的任务数量
Trait Implementations§
Source§impl Clone for StateTracker
impl Clone for StateTracker
Auto Trait Implementations§
impl !RefUnwindSafe for StateTracker
impl !UnwindSafe for StateTracker
impl Freeze for StateTracker
impl Send for StateTracker
impl Sync for StateTracker
impl Unpin for StateTracker
impl UnsafeUnpin for StateTracker
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