#![expect(
dead_code,
reason = "由后续 ProcessorTemplateHandler 的待处理队列创建并消费"
)]
use std::sync::{Arc, Mutex};
use crate::context::IEngineContext;
use super::IEngineProcessable;
use super::i_engine_processable::EngineProcessableResult;
use super::template_flow_controller::TemplateFlowController;
pub(crate) struct DecreaseContextLevelProcessable {
context: Option<Arc<dyn IEngineContext>>,
flow_controller: Arc<Mutex<TemplateFlowController>>,
}
impl DecreaseContextLevelProcessable {
pub(crate) fn new(
context: Option<Arc<dyn IEngineContext>>,
flow_controller: Arc<Mutex<TemplateFlowController>>,
) -> Self {
Self {
context,
flow_controller,
}
}
}
impl IEngineProcessable for DecreaseContextLevelProcessable {
fn process(&mut self) -> EngineProcessableResult {
if self
.flow_controller
.lock()
.expect("template flow controller lock poisoned")
.stop_processing
{
return Ok(false);
}
if let Some(context) = &self.context {
context.decrease_level();
}
Ok(true)
}
}