vmi_core/
handler.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use crate::{VmiContext, VmiDriver, VmiEventResponse, VmiOs};

/// A trait for handling VMI events.
///
/// A factory that creates a handler implementing this trait is passed to
/// the [`VmiSession::handle`] method to handle VMI events.
///
/// [`VmiSession::handle`]: crate::VmiSession::handle
pub trait VmiHandler<Driver, Os>
where
    Driver: VmiDriver,
    Os: VmiOs<Driver>,
{
    /// Handles a VMI event.
    fn handle_event(
        &mut self,
        event: VmiContext<Driver, Os>,
    ) -> VmiEventResponse<Driver::Architecture>;

    /// Returns whether the handler has finished processing events.
    fn finished(&self) -> bool {
        false
    }
}