use std::sync::{Arc, Mutex};
use std::time::Duration;
use osdns::DnsManager;
fn main() -> osdns::Result<()> {
let manager = DnsManager::builder().owner("io.example.watch").build()?;
let caps = manager.capabilities()?;
println!("backend: {}", caps.backend);
if !caps.watch {
println!("change notifications are not supported on this backend; exiting");
return Ok(());
}
let events = Arc::new(Mutex::new(Vec::new()));
let sink = Arc::clone(&events);
let watch = manager.watch(Arc::new(move |event| {
sink.lock().unwrap().push(format!("{event:?}"));
}))?;
std::thread::sleep(Duration::from_secs(2));
watch.stop();
println!("observed {} event(s)", events.lock().unwrap().len());
Ok(())
}