#[derive(Debug, Clone, Copy)]
pub struct IoSlice {
pub buf: *mut u8,
pub len: usize,
}
#[derive(Debug, Clone)]
pub enum Operation {
Read {
fd: i32,
buf: *mut u8,
len: usize,
offset: u64,
},
Write {
fd: i32,
buf: *const u8,
len: usize,
offset: u64,
},
Readv {
fd: i32,
bufs: *const IoSlice,
buf_count: u32,
offset: u64,
},
Writev {
fd: i32,
bufs: *const IoSlice,
buf_count: u32,
offset: u64,
},
Accept {
fd: i32,
addr: *mut libc::sockaddr,
addrlen: *mut u32,
},
Connect {
fd: i32,
addr: *const libc::sockaddr,
addrlen: u32,
},
Recv { fd: i32, buf: *mut u8, len: usize },
Send { fd: i32, buf: *const u8, len: usize },
Close { fd: i32 },
}