Files
tart-softnet/lib/vm.rs
T
Nikolay Edigaryev 11910d8540 Sentry integration (#13)
* Sentry integration

* Introduce a more generic CIRRUS_SENTRY_TAGS

* Revert switching to nightly toolchain
2022-12-12 21:33:45 +04:00

31 lines
640 B
Rust

use anyhow::Result;
use std::os::unix::io::{AsRawFd, FromRawFd, RawFd};
use std::os::unix::net::UnixDatagram;
pub struct VM {
sock: UnixDatagram,
}
impl VM {
pub fn new(vm_fd: RawFd) -> Result<VM> {
let sock = unsafe { UnixDatagram::from_raw_fd(vm_fd) };
sock.set_nonblocking(true)?;
Ok(VM { sock })
}
pub fn write(&self, pkt: &[u8]) -> std::io::Result<usize> {
self.sock.send(pkt)
}
pub fn read(&self, buf: &mut [u8]) -> std::io::Result<usize> {
self.sock.recv(buf)
}
}
impl AsRawFd for VM {
fn as_raw_fd(&self) -> RawFd {
self.sock.as_raw_fd()
}
}