moros 0.12.0

MOROS: Obscure Rust Operating System
Documentation
use crate::api::fs::{FileIO, IO};
use crate::sys::net::EthernetDeviceIO;

use alloc::format;

#[derive(Debug, Clone)]
pub struct NetUsage;

impl NetUsage {
    pub fn new() -> Self {
        Self
    }

    pub fn size() -> usize {
        83
    }
}

impl FileIO for NetUsage {
    fn read(&mut self, buf: &mut [u8]) -> Result<usize, ()> {
        if let Some((_, ref mut device)) = *super::NET.lock() {
            let stats = device.stats();
            let s = format!(
                "{} {} {} {}",
                stats.rx_packets_count(),
                stats.rx_bytes_count(),
                stats.tx_packets_count(),
                stats.tx_bytes_count(),
            );
            let n = s.len();
            buf[0..n].copy_from_slice(s.as_bytes());
            return Ok(n);
        }
        Err(())
    }

    fn write(&mut self, _buf: &[u8]) -> Result<usize, ()> {
        Err(())
    }

    fn close(&mut self) {}

    fn poll(&mut self, event: IO) -> bool {
        match event {
            IO::Read => true,
            IO::Write => false,
        }
    }
}