use std::sync::Arc;
use camel_api::MetricsCollector;
use camel_language_api::Language;
use crate::Component;
pub trait ComponentContext: Send + Sync {
fn resolve_component(&self, scheme: &str) -> Option<Arc<dyn Component>>;
fn resolve_language(&self, name: &str) -> Option<Arc<dyn Language>>;
fn metrics(&self) -> Arc<dyn MetricsCollector>;
}
pub struct NoOpComponentContext;
impl ComponentContext for NoOpComponentContext {
fn resolve_component(&self, _scheme: &str) -> Option<Arc<dyn Component>> {
None
}
fn resolve_language(&self, _name: &str) -> Option<Arc<dyn Language>> {
None
}
fn metrics(&self) -> Arc<dyn MetricsCollector> {
Arc::new(camel_api::NoOpMetrics)
}
}