use std::sync::atomic::{AtomicBool, Ordering};
pub static GLOBAL: AtomicBool = AtomicBool::new(false);
pub fn enable_global_pipeline() {
GLOBAL.store(true, Ordering::Release);
}
pub fn mediator_config() {
enable_global_pipeline();
}
#[macro_export]
macro_rules! __noema_emit_globals {
($input:ty, $behaviors:expr) => {};
}
#[macro_export]
macro_rules! global_pipeline {
($($behavior:ty),* $(,)?) => {
macro_rules! __noema_emit_globals {
($input:ty, $behaviors:expr) => {
$(
$behaviors.push(
::std::sync::Arc::new(
<$behavior as $crate::core::Injectable<$crate::core::Container>>::inject(
&$crate::core::Container,
),
) as ::std::sync::Arc<
dyn $crate::mediator::PipelineBehavior<$input> + Send + Sync,
>,
);
)*
};
}
};
}
#[macro_export]
macro_rules! global_request {
($($behavior:ty),* $(,)?) => {
$crate::global_pipeline! { $($behavior),* }
};
}