Skip to main content

camel_master/
bundle.rs

1use std::sync::Arc;
2
3use camel_component_api::{CamelError, ComponentBundle, ComponentRegistrar};
4
5use crate::{MasterComponent, config::MasterComponentConfig};
6
7pub struct MasterBundle {
8    config: MasterComponentConfig,
9}
10
11impl ComponentBundle for MasterBundle {
12    fn config_key() -> &'static str {
13        "master"
14    }
15
16    fn from_toml(value: toml::Value) -> Result<Self, CamelError> {
17        let drain_timeout_ms = value
18            .get("drain_timeout_ms")
19            .and_then(|v| v.as_integer())
20            .unwrap_or(5000) as u64;
21
22        Ok(Self {
23            config: MasterComponentConfig { drain_timeout_ms },
24        })
25    }
26
27    fn register_all(self, ctx: &mut dyn ComponentRegistrar) {
28        ctx.register_component_dyn(Arc::new(MasterComponent::new(self.config)));
29    }
30}