use crate::stages::common::handlers::{
FiniteSourceHandler, InfiniteSourceHandler, SinkHandler, TransformHandler,
};
use obzenflow_core::{SccId, StageId};
use std::collections::HashSet;
use super::MaxIterations;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct CycleGuardConfig {
pub max_iterations: MaxIterations,
pub scc_id: SccId,
pub external_upstreams: HashSet<StageId>,
pub internal_upstreams: HashSet<StageId>,
pub is_entry_point: bool,
pub scc_internal_edges: Vec<(StageId, StageId)>,
}
pub enum StageHandlerType {
FiniteSource(Box<dyn FiniteSourceHandler>),
InfiniteSource(Box<dyn InfiniteSourceHandler>),
Transform(Box<dyn TransformHandler>),
Sink(Box<dyn SinkHandler>),
}
pub struct StageConfig {
pub stage_id: StageId,
pub name: String,
pub flow_name: String,
pub cycle_guard: Option<CycleGuardConfig>,
}
pub struct ObserverConfig {
pub name: String,
}