wireshift-uring 0.1.1

Native Linux io_uring backend for wireshift
Documentation
#![allow(missing_docs)]

use std::fs::File;
use std::time::Duration;
use wireshift_core::backend::{Backend, BackendSubmission};
use wireshift_core::buffer::Buffer;
use wireshift_core::config::RingConfig;
use wireshift_core::op::OpDescriptor;
use wireshift_uring::UringBackend;

#[test]
fn test_adversarial_dev_zero() {
    let config = RingConfig::default();
    let (tx, rx) = std::sync::mpsc::channel();
    let backend = UringBackend::new(&config, tx).unwrap();

    let file = File::open("/dev/zero").expect("failed to open /dev/zero");
    let buffer = Buffer::from_vec(vec![0u8; 1024 * 1024]).unwrap(); // 1MB read

    let submission = BackendSubmission { timeout: None, 
        id: 1,
        descriptor: OpDescriptor::Read {
            file,
            offset: 0,
            buffer,
            len: None,
        },
    };

    backend.submit(submission).unwrap();

    // Wait for completion
    let completion = rx
        .recv_timeout(Duration::from_secs(5))
        .expect("read from /dev/zero timed out");
    assert_eq!(completion.id, 1);
    assert!(
        completion.result.is_ok(),
        "read from /dev/zero failed: {:?}",
        completion.result
    );
}