use crate::config::LdpAdapterConfig;
use crate::protocol::ProtocolRegistry;
use crate::LdpAdapter;
use std::sync::Arc;
pub fn register_ldp(registry: &mut ProtocolRegistry, config: Option<LdpAdapterConfig>) {
let config = config.unwrap_or_default();
let adapter = Arc::new(LdpAdapter::new(config));
registry.register("ldp", adapter, vec!["ldp://"]);
}
#[cfg(feature = "jamjet")]
pub fn register_ldp_jamjet(
registry: &mut jamjet_protocols::ProtocolRegistry,
config: Option<LdpAdapterConfig>,
) {
let config = config.unwrap_or_default();
let adapter = Arc::new(LdpAdapter::new(config));
registry.register("ldp", adapter, vec!["ldp://"]);
}
pub fn create_adapter(config: Option<LdpAdapterConfig>) -> Arc<LdpAdapter> {
Arc::new(LdpAdapter::new(config.unwrap_or_default()))
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn register_ldp_in_registry() {
let mut registry = ProtocolRegistry::new();
register_ldp(&mut registry, None);
assert!(registry.adapter("ldp").is_some());
assert!(registry.protocols().contains(&"ldp"));
}
#[test]
fn url_routing_matches_ldp_prefix() {
let mut registry = ProtocolRegistry::new();
register_ldp(&mut registry, None);
assert!(registry
.adapter_for_url("ldp://delegate.example.com")
.is_some());
assert!(registry.adapter_for_url("https://not-ldp.com").is_none());
}
#[tokio::test]
async fn create_standalone_adapter() {
let adapter = create_adapter(None);
assert_eq!(adapter.session_manager().active_count().await, 0);
}
}