use dex_sdk::{
Context, Flow, HandlerError, HandlerResult, RetryPolicy, Step, StepDecision, StepList,
StepOptions,
};
pub(crate) struct BasicAbnormalExitWorkflow {
start: BasicAbnormalExitStep,
}
impl BasicAbnormalExitWorkflow {
pub(crate) fn new() -> Self {
Self {
start: BasicAbnormalExitStep,
}
}
}
impl Flow for BasicAbnormalExitWorkflow {
type StartInput = i32;
fn steps(&self) -> StepList<'_, Self::StartInput> {
StepList::start(&self.start)
}
}
struct BasicAbnormalExitStep;
impl Step for BasicAbnormalExitStep {
type Input = i32;
fn execute(&self, _context: &mut Context, _input: i32) -> HandlerResult<StepDecision> {
Err(HandlerError::new("abnormal exit"))
}
fn options(&self) -> StepOptions<Self::Input> {
StepOptions::new().execute_retry(RetryPolicy::new().maximum_attempts(1))
}
}