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}