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}