camel_api/
endpoint_pipeline.rs1use 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}