pub struct TaskChain { /* private fields */ }Expand description
Task chain configuration
§Examples
use reinhardt_tasks::TaskChain;
let chain = TaskChain::new("email-workflow");
assert_eq!(chain.name(), "email-workflow");Implementations§
Source§impl TaskChain
impl TaskChain
Sourcepub fn new(name: impl Into<String>) -> Self
pub fn new(name: impl Into<String>) -> Self
Create a new task chain
§Examples
use reinhardt_tasks::TaskChain;
let chain = TaskChain::new("payment-processing");
assert_eq!(chain.name(), "payment-processing");Sourcepub fn id(&self) -> TaskId
pub fn id(&self) -> TaskId
Get the chain ID
§Examples
use reinhardt_tasks::TaskChain;
let chain = TaskChain::new("test-chain");
let id = chain.id();Sourcepub fn name(&self) -> &str
pub fn name(&self) -> &str
Get the chain name
§Examples
use reinhardt_tasks::TaskChain;
let chain = TaskChain::new("my-chain");
assert_eq!(chain.name(), "my-chain");Sourcepub fn add_task(&mut self, task_id: TaskId)
pub fn add_task(&mut self, task_id: TaskId)
Add a task to the chain
§Examples
use reinhardt_tasks::{TaskChain, TaskId};
let mut chain = TaskChain::new("workflow");
let task_id = TaskId::new();
chain.add_task(task_id);
assert_eq!(chain.task_count(), 1);Sourcepub fn task_count(&self) -> usize
pub fn task_count(&self) -> usize
Get the number of tasks in the chain
§Examples
use reinhardt_tasks::{TaskChain, TaskId};
let mut chain = TaskChain::new("workflow");
chain.add_task(TaskId::new());
chain.add_task(TaskId::new());
assert_eq!(chain.task_count(), 2);Sourcepub fn current_task(&self) -> Option<TaskId>
pub fn current_task(&self) -> Option<TaskId>
Get the current task ID
§Examples
use reinhardt_tasks::{TaskChain, TaskId};
let mut chain = TaskChain::new("workflow");
let task_id = TaskId::new();
chain.add_task(task_id);
assert_eq!(chain.current_task(), Some(task_id));Sourcepub fn advance(&mut self) -> bool
pub fn advance(&mut self) -> bool
Move to the next task in the chain
Returns true if there are more tasks, false if the chain is complete.
§Examples
use reinhardt_tasks::{TaskChain, TaskId};
let mut chain = TaskChain::new("workflow");
chain.add_task(TaskId::new());
chain.add_task(TaskId::new());
assert!(chain.advance());
assert!(!chain.advance()); // No more tasksSourcepub fn status(&self) -> ChainStatus
pub fn status(&self) -> ChainStatus
Get the chain status
§Examples
use reinhardt_tasks::{TaskChain, ChainStatus};
let chain = TaskChain::new("workflow");
assert_eq!(chain.status(), ChainStatus::Pending);Sourcepub fn set_status(&mut self, status: ChainStatus)
pub fn set_status(&mut self, status: ChainStatus)
Set the chain status
§Examples
use reinhardt_tasks::{TaskChain, ChainStatus};
let mut chain = TaskChain::new("workflow");
chain.set_status(ChainStatus::Running);
assert_eq!(chain.status(), ChainStatus::Running);Sourcepub fn is_complete(&self) -> bool
pub fn is_complete(&self) -> bool
Check if the chain is complete
§Examples
use reinhardt_tasks::{TaskChain, ChainStatus};
let mut chain = TaskChain::new("workflow");
chain.set_status(ChainStatus::Completed);
assert!(chain.is_complete());Sourcepub async fn execute(
&mut self,
backend: Arc<dyn TaskBackend>,
) -> Result<(), TaskExecutionError>
pub async fn execute( &mut self, backend: Arc<dyn TaskBackend>, ) -> Result<(), TaskExecutionError>
Execute the chain
This method will execute all tasks in the chain sequentially.
§Examples
use reinhardt_tasks::{TaskChain, DummyBackend};
use std::sync::Arc;
let mut chain = TaskChain::new("workflow");
let backend = Arc::new(DummyBackend::new());
chain.execute(backend).await?;
assert!(chain.is_complete());Trait Implementations§
Source§impl<'de> Deserialize<'de> for TaskChain
impl<'de> Deserialize<'de> for TaskChain
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
Auto Trait Implementations§
impl Freeze for TaskChain
impl RefUnwindSafe for TaskChain
impl Send for TaskChain
impl Sync for TaskChain
impl Unpin for TaskChain
impl UnsafeUnpin for TaskChain
impl UnwindSafe for TaskChain
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