#[cfg(doc)]
use crate::enums::GuestSessionWaitForFlag;
#[cfg(doc)]
use crate::{Guest, GuestSession};
use log::error;
use std::fmt::Display;
use vbox_raw::sys_lib as raw;
#[derive(Debug)]
pub enum GuestSessionWaitResult {
None,
Start,
Terminate,
Status,
Error,
Timeout,
WaitFlagNotSupported,
}
impl From<u32> for GuestSessionWaitResult {
fn from(value: u32) -> Self {
match value {
raw::GuestSessionWaitResult_GuestSessionWaitResult_None => GuestSessionWaitResult::None,
raw::GuestSessionWaitResult_GuestSessionWaitResult_Start => {
GuestSessionWaitResult::Start
}
raw::GuestSessionWaitResult_GuestSessionWaitResult_Terminate => {
GuestSessionWaitResult::Terminate
}
raw::GuestSessionWaitResult_GuestSessionWaitResult_Status => {
GuestSessionWaitResult::Status
}
raw::GuestSessionWaitResult_GuestSessionWaitResult_Error => {
GuestSessionWaitResult::Error
}
raw::GuestSessionWaitResult_GuestSessionWaitResult_Timeout => {
GuestSessionWaitResult::Timeout
}
raw::GuestSessionWaitResult_GuestSessionWaitResult_WaitFlagNotSupported => {
GuestSessionWaitResult::WaitFlagNotSupported
}
_ => {
error!("Unknown GuestSessionWaitResult. Type: {}", value);
GuestSessionWaitResult::None
}
}
}
}
impl Into<u32> for GuestSessionWaitResult {
fn into(self) -> u32 {
match self {
GuestSessionWaitResult::None => raw::GuestSessionWaitResult_GuestSessionWaitResult_None,
GuestSessionWaitResult::Start => {
raw::GuestSessionWaitResult_GuestSessionWaitResult_Start
}
GuestSessionWaitResult::Terminate => {
raw::GuestSessionWaitResult_GuestSessionWaitResult_Terminate
}
GuestSessionWaitResult::Status => {
raw::GuestSessionWaitResult_GuestSessionWaitResult_Status
}
GuestSessionWaitResult::Error => {
raw::GuestSessionWaitResult_GuestSessionWaitResult_Error
}
GuestSessionWaitResult::Timeout => {
raw::GuestSessionWaitResult_GuestSessionWaitResult_Timeout
}
GuestSessionWaitResult::WaitFlagNotSupported => {
raw::GuestSessionWaitResult_GuestSessionWaitResult_WaitFlagNotSupported
}
}
}
}
impl Display for GuestSessionWaitResult {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", format!("{:?}", self))
}
}