use std::{error::Error, net::IpAddr};
#[cfg(test)]
mod tests;
const DEFAULT_ADDRESS: IpAddr = IpAddr::V4(std::net::Ipv4Addr::new(8, 8, 8, 8));
const DEFAULT_PAYLOAD: &[u8] = &[0; 8];
pub async fn ping(
address: Option<IpAddr>,
payload: Option<&[u8]>,
) -> Result<(surge_ping::IcmpPacket, std::time::Duration), Box<dyn Error>> {
let address = address.unwrap_or(DEFAULT_ADDRESS);
let payload = payload.unwrap_or(DEFAULT_PAYLOAD);
let pinged = surge_ping::ping(address, payload).await;
match pinged {
Ok(pinged) => {
Ok(pinged)
}
Err(e) => {
Err(Box::new(e))
}
}
}