1use crate::config::LdpAdapterConfig;
26use crate::protocol::ProtocolRegistry;
27use crate::LdpAdapter;
28use std::sync::Arc;
29
30pub fn register_ldp(registry: &mut ProtocolRegistry, config: Option<LdpAdapterConfig>) {
42 let config = config.unwrap_or_default();
43 let adapter = Arc::new(LdpAdapter::new(config));
44 registry.register("ldp", adapter, vec!["ldp://"]);
45}
46
47#[cfg(feature = "jamjet")]
52pub fn register_ldp_jamjet(
53 registry: &mut jamjet_protocols::ProtocolRegistry,
54 config: Option<LdpAdapterConfig>,
55) {
56 let config = config.unwrap_or_default();
57 let adapter = Arc::new(LdpAdapter::new(config));
58 registry.register("ldp", adapter, vec!["ldp://"]);
59}
60
61pub fn create_adapter(config: Option<LdpAdapterConfig>) -> Arc<LdpAdapter> {
65 Arc::new(LdpAdapter::new(config.unwrap_or_default()))
66}
67
68#[cfg(test)]
69mod tests {
70 use super::*;
71
72 #[test]
73 fn register_ldp_in_registry() {
74 let mut registry = ProtocolRegistry::new();
75 register_ldp(&mut registry, None);
76
77 assert!(registry.adapter("ldp").is_some());
78 assert!(registry.protocols().contains(&"ldp"));
79 }
80
81 #[test]
82 fn url_routing_matches_ldp_prefix() {
83 let mut registry = ProtocolRegistry::new();
84 register_ldp(&mut registry, None);
85
86 assert!(registry
87 .adapter_for_url("ldp://delegate.example.com")
88 .is_some());
89 assert!(registry.adapter_for_url("https://not-ldp.com").is_none());
90 }
91
92 #[tokio::test]
93 async fn create_standalone_adapter() {
94 let adapter = create_adapter(None);
95 assert_eq!(adapter.session_manager().active_count().await, 0);
96 }
97}