use std::env;
use std::io::{self, ErrorKind};
use tokio::net::UnixDatagram;
pub async fn sd_notify(msg: &str) -> io::Result<()> {
if let Some(socket_path) = env::var_os("NOTIFY_SOCKET") {
let sock = UnixDatagram::unbound()?;
let len = sock.send_to(msg.as_bytes(), socket_path).await?;
if len == msg.len() {
Ok(())
} else {
let err = io::Error::new(ErrorKind::WriteZero, "incomplete write");
Err(err)
}
} else {
Ok(())
}
}
pub async fn sd_ready() -> io::Result<()> {
sd_notify("READY=1").await
}
pub async fn ping_watchdog() -> io::Result<()> {
sd_notify("WATCHDOG=1").await
}