1use camel_api::CamelError;
2
3#[derive(Debug, Clone)]
4pub struct MasterUriConfig {
5 pub lock_name: String,
6 pub delegate_uri: String,
7}
8
9impl MasterUriConfig {
10 pub fn parse(uri: &str) -> Result<Self, CamelError> {
11 let mut parts = uri.splitn(3, ':');
12 let scheme = parts.next().unwrap_or_default();
13 let lock_name = parts.next().unwrap_or_default();
14 let delegate_uri = parts.next().unwrap_or_default();
15 if scheme != "master" || lock_name.is_empty() || delegate_uri.is_empty() {
16 return Err(CamelError::InvalidUri(format!(
17 "{uri}: expected master:<lockname>:<delegate-uri>"
18 )));
19 }
20 Ok(Self {
21 lock_name: lock_name.to_string(),
22 delegate_uri: delegate_uri.to_string(),
23 })
24 }
25}
26
27#[derive(Debug, Clone)]
32pub struct MasterComponentConfig {
33 pub drain_timeout_ms: u64,
35 pub delegate_retry_max_attempts: Option<u32>,
38}
39
40impl MasterComponentConfig {
41 pub fn new(drain_timeout_ms: u64, delegate_retry_max_attempts: Option<u32>) -> Self {
43 Self {
44 drain_timeout_ms,
45 delegate_retry_max_attempts,
46 }
47 }
48}
49
50impl Default for MasterComponentConfig {
51 fn default() -> Self {
52 Self {
53 drain_timeout_ms: 5000,
54 delegate_retry_max_attempts: Some(30),
55 }
56 }
57}