Skip to main content

rdif_vsock/
interface.rs

1use crate::{DriverGeneric, Event, VsockConnId, VsockError, VsockEvent};
2
3pub trait Interface: DriverGeneric {
4    fn guest_cid(&self) -> u64;
5
6    fn listen(&mut self, port: u32) -> Result<(), VsockError>;
7
8    fn connect(&mut self, id: VsockConnId) -> Result<(), VsockError>;
9
10    fn send(&mut self, id: VsockConnId, buf: &[u8]) -> Result<usize, VsockError>;
11
12    fn recv(&mut self, id: VsockConnId, buf: &mut [u8]) -> Result<usize, VsockError>;
13
14    fn recv_avail(&mut self, id: VsockConnId) -> Result<usize, VsockError>;
15
16    fn disconnect(&mut self, id: VsockConnId) -> Result<(), VsockError>;
17
18    fn abort(&mut self, id: VsockConnId) -> Result<(), VsockError>;
19
20    fn poll_event(&mut self) -> Result<Option<VsockEvent>, VsockError>;
21
22    fn enable_irq(&mut self) {}
23
24    fn disable_irq(&mut self) {}
25
26    fn is_irq_enabled(&self) -> bool {
27        false
28    }
29
30    fn handle_irq(&mut self) -> Event {
31        Event::none()
32    }
33}