use log::error;
use std::fmt::Display;
use vbox_raw::sys_lib as raw;
#[derive(Debug)]
pub enum GuestUserState {
Unknown,
LoggedIn,
LoggedOut,
Locked,
Unlocked,
Disabled,
Idle,
InUse,
Created,
Deleted,
SessionChanged,
CredentialsChanged,
RoleChanged,
GroupAdded,
GroupRemoved,
Elevated,
}
impl From<u32> for GuestUserState {
fn from(value: u32) -> Self {
match value {
raw::GuestUserState_GuestUserState_Unknown => GuestUserState::Unknown,
raw::GuestUserState_GuestUserState_LoggedIn => GuestUserState::LoggedIn,
raw::GuestUserState_GuestUserState_LoggedOut => GuestUserState::LoggedOut,
raw::GuestUserState_GuestUserState_Locked => GuestUserState::Locked,
raw::GuestUserState_GuestUserState_Unlocked => GuestUserState::Unlocked,
raw::GuestUserState_GuestUserState_Disabled => GuestUserState::Disabled,
raw::GuestUserState_GuestUserState_Idle => GuestUserState::Idle,
raw::GuestUserState_GuestUserState_InUse => GuestUserState::InUse,
raw::GuestUserState_GuestUserState_Created => GuestUserState::Created,
raw::GuestUserState_GuestUserState_Deleted => GuestUserState::Deleted,
raw::GuestUserState_GuestUserState_SessionChanged => GuestUserState::SessionChanged,
raw::GuestUserState_GuestUserState_CredentialsChanged => {
GuestUserState::CredentialsChanged
}
raw::GuestUserState_GuestUserState_RoleChanged => GuestUserState::RoleChanged,
raw::GuestUserState_GuestUserState_GroupAdded => GuestUserState::GroupAdded,
raw::GuestUserState_GuestUserState_GroupRemoved => GuestUserState::GroupRemoved,
raw::GuestUserState_GuestUserState_Elevated => GuestUserState::Elevated,
_ => {
error!("Unknown GuestUserState/ State: {}", value);
GuestUserState::Unknown
}
}
}
}
impl Into<u32> for GuestUserState {
fn into(self) -> u32 {
match self {
GuestUserState::Unknown => raw::GuestUserState_GuestUserState_Unknown,
GuestUserState::LoggedIn => raw::GuestUserState_GuestUserState_LoggedIn,
GuestUserState::LoggedOut => raw::GuestUserState_GuestUserState_LoggedOut,
GuestUserState::Locked => raw::GuestUserState_GuestUserState_Locked,
GuestUserState::Unlocked => raw::GuestUserState_GuestUserState_Unlocked,
GuestUserState::Disabled => raw::GuestUserState_GuestUserState_Disabled,
GuestUserState::Idle => raw::GuestUserState_GuestUserState_Idle,
GuestUserState::InUse => raw::GuestUserState_GuestUserState_InUse,
GuestUserState::Created => raw::GuestUserState_GuestUserState_Created,
GuestUserState::Deleted => raw::GuestUserState_GuestUserState_Deleted,
GuestUserState::SessionChanged => raw::GuestUserState_GuestUserState_SessionChanged,
GuestUserState::CredentialsChanged => {
raw::GuestUserState_GuestUserState_CredentialsChanged
}
GuestUserState::RoleChanged => raw::GuestUserState_GuestUserState_RoleChanged,
GuestUserState::GroupAdded => raw::GuestUserState_GuestUserState_GroupAdded,
GuestUserState::GroupRemoved => raw::GuestUserState_GuestUserState_GroupRemoved,
GuestUserState::Elevated => raw::GuestUserState_GuestUserState_Elevated,
}
}
}
impl Display for GuestUserState {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", format!("{:?}", self))
}
}