Skip to main content

camel_api/
endpoint_pipeline.rs

1use std::sync::Arc;
2
3use crate::BoxProcessor;
4
5pub const CAMEL_SLIP_ENDPOINT: &str = "CamelSlipEndpoint";
6
7pub type EndpointResolver = Arc<dyn Fn(&str) -> Option<BoxProcessor> + Send + Sync>;
8
9#[derive(Clone)]
10pub struct EndpointPipelineConfig {
11    pub cache_size: usize,
12    pub ignore_invalid_endpoints: bool,
13}
14
15impl EndpointPipelineConfig {
16    pub fn from_signed(n: i32) -> usize {
17        if n <= 0 { 0 } else { n as usize }
18    }
19}
20
21impl Default for EndpointPipelineConfig {
22    fn default() -> Self {
23        Self {
24            cache_size: 1000,
25            ignore_invalid_endpoints: false,
26        }
27    }
28}
29
30#[cfg(test)]
31mod tests {
32    use super::*;
33
34    #[test]
35    fn from_signed_positive() {
36        assert_eq!(EndpointPipelineConfig::from_signed(42), 42);
37    }
38
39    #[test]
40    fn from_signed_zero() {
41        assert_eq!(EndpointPipelineConfig::from_signed(0), 0);
42    }
43
44    #[test]
45    fn from_signed_negative() {
46        assert_eq!(EndpointPipelineConfig::from_signed(-5), 0);
47    }
48
49    #[test]
50    fn default_values() {
51        let cfg = EndpointPipelineConfig::default();
52        assert_eq!(cfg.cache_size, 1000);
53        assert!(!cfg.ignore_invalid_endpoints);
54    }
55
56    #[test]
57    fn clone_preserves_values() {
58        let cfg = EndpointPipelineConfig {
59            cache_size: 50,
60            ignore_invalid_endpoints: true,
61        };
62        let cloned = cfg.clone();
63        assert_eq!(cloned.cache_size, 50);
64        assert!(cloned.ignore_invalid_endpoints);
65    }
66
67    #[test]
68    fn constant_value() {
69        assert_eq!(CAMEL_SLIP_ENDPOINT, "CamelSlipEndpoint");
70    }
71}