heim-net 0.0.11

Cross-platform network information
Documentation
use heim_common::prelude::*;
use heim_net as net;

#[cfg(target_os = "linux")]
use heim_net::os::linux::IoCountersExt;

#[cfg(target_os = "windows")]
use heim_net::os::windows::IoCountersExt;

#[heim_derive::test]
async fn smoke_io_counters() {
    let mut counters = net::io_counters();
    while let Some(counter) = counters.next().await {
        let counter = counter.unwrap();

        let _ = counter.interface();
        let _ = counter.bytes_sent();
        let _ = counter.bytes_recv();
        let _ = counter.packets_sent();
        let _ = counter.packets_recv();
        let _ = counter.errors_sent();
        let _ = counter.errors_recv();
        let _ = counter.drop_recv();

        #[cfg(any(target_os = "linux", target_os = "windows"))]
        let _ = counter.drop_sent();
    }
}

#[heim_derive::test]
async fn smoke_nic() {
    let mut nic = net::nic();
    while let Some(iface) = nic.next().await {
        let iface = iface.unwrap();

        let _ = iface.name();
        let _ = iface.address();
        let _ = iface.netmask();
        let _ = iface.destination();
        let _ = iface.is_up();
        let _ = iface.is_loopback();
        let _ = iface.is_multicast();

        #[cfg(target_os = "linux")]
        {
            use heim_net::os::linux::NicExt;

            let _ = iface.broadcast();
            let _ = iface.is_broadcast();
            let _ = iface.is_point_to_point();
        }

        #[cfg(target_os = "macos")]
        {
            use heim_net::os::macos::NicExt;

            let _ = iface.broadcast();
            let _ = iface.is_broadcast();
            let _ = iface.is_point_to_point();
        }
    }
}