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.adapter_for_url("ldp://delegate.example.com").is_some());
87 assert!(registry.adapter_for_url("https://not-ldp.com").is_none());
88 }
89
90 #[tokio::test]
91 async fn create_standalone_adapter() {
92 let adapter = create_adapter(None);
93 assert_eq!(adapter.session_manager().active_count().await, 0);
94 }
95}