use std::sync::Arc;
use meerkat_core::handles::{DslTransitionError, ModelRoutingHandle};
use meerkat_core::lifecycle::run_primitive::ModelId;
use super::HandleDslAuthority;
use crate::meerkat_machine::dsl as mm_dsl;
#[derive(Debug)]
pub struct RuntimeModelRoutingHandle {
dsl: Arc<HandleDslAuthority>,
}
impl RuntimeModelRoutingHandle {
pub fn new(dsl: Arc<HandleDslAuthority>) -> Self {
Self { dsl }
}
pub fn ephemeral() -> Self {
Self::new(Arc::new(HandleDslAuthority::ephemeral()))
}
}
impl ModelRoutingHandle for RuntimeModelRoutingHandle {
fn set_baseline(
&self,
baseline_model: ModelId,
realtime_capable: bool,
) -> Result<(), DslTransitionError> {
self.dsl.apply_input(
mm_dsl::MeerkatMachineInput::SetModelRoutingBaseline {
baseline_model: baseline_model.to_string(),
realtime_capable,
},
"ModelRoutingHandle::set_baseline",
)
}
}