camel_component_api/
component_context.rs1use std::sync::Arc;
2
3use camel_api::MetricsCollector;
4use camel_language_api::Language;
5
6use crate::Component;
7
8pub trait ComponentContext: Send + Sync {
10 fn resolve_component(&self, scheme: &str) -> Option<Arc<dyn Component>>;
12
13 fn resolve_language(&self, name: &str) -> Option<Arc<dyn Language>>;
15
16 fn metrics(&self) -> Arc<dyn MetricsCollector>;
18}
19
20pub struct NoOpComponentContext;
22
23impl ComponentContext for NoOpComponentContext {
24 fn resolve_component(&self, _scheme: &str) -> Option<Arc<dyn Component>> {
25 None
26 }
27
28 fn resolve_language(&self, _name: &str) -> Option<Arc<dyn Language>> {
29 None
30 }
31
32 fn metrics(&self) -> Arc<dyn MetricsCollector> {
33 Arc::new(camel_api::NoOpMetrics)
34 }
35}