switchy_mdns 0.1.2

Switchy mdns service discovery package
Documentation
use async_trait::async_trait;
use mdns_sd::{ServiceDaemon, ServiceInfo};

#[async_trait]
pub trait MdnsServiceDaemon: Send + Sync {
    async fn register(&self, service_info: ServiceInfo) -> Result<(), mdns_sd::Error>;
}

pub struct MdnsSdServiceDaemon(ServiceDaemon);

impl MdnsSdServiceDaemon {
    #[must_use]
    pub const fn new(service_daemon: ServiceDaemon) -> Self {
        Self(service_daemon)
    }
}

#[async_trait]
impl MdnsServiceDaemon for MdnsSdServiceDaemon {
    async fn register(&self, service_info: ServiceInfo) -> Result<(), mdns_sd::Error> {
        self.0.register(service_info)
    }
}

#[cfg(feature = "simulator")]
pub mod simulator {
    use async_trait::async_trait;
    use mdns_sd::ServiceInfo;

    use super::MdnsServiceDaemon;

    pub struct SimulatorServiceDaemon;

    #[async_trait]
    impl MdnsServiceDaemon for SimulatorServiceDaemon {
        async fn register(&self, _service_info: ServiceInfo) -> Result<(), mdns_sd::Error> {
            Ok(())
        }
    }
}