In the provided Xous OS context, middleware is used by connecting to named service servers like "DNS Resolver Middleware" or "Middleware Network Server" via the connect function to obtain a Connection handle. You initialize the connection once, store the ID in an atomic variable, and reuse it for subsequent operations.
use crate::os::xous::services::connect;
use core::sync::atomic::{AtomicU32, Ordering};
pub fn get_dns_connection() -> Connection {
static DNS_CID: AtomicU32 = AtomicU32::new(0);
let cid = DNS_CID.load(Ordering::Relaxed);
if cid != 0 {
return cid.into();
}
let new_cid = connect("_DNS Resolver Middleware_").unwrap();
DNS_CID.store(new_cid.into(), Ordering::Relaxed);
new_cid
}