use log::error;
use std::fmt::Display;
use vbox_raw::sys_lib as raw;
#[cfg(doc)]
use crate::Medium;
#[derive(Debug, Eq, PartialEq)]
pub enum MediumState {
NotCreated,
Created,
LockedRead,
LockedWrite,
Inaccessible,
Creating,
Deleting,
}
impl Into<u32> for MediumState {
fn into(self) -> u32 {
match self {
MediumState::NotCreated => raw::MediumState_MediumState_NotCreated,
MediumState::Created => raw::MediumState_MediumState_Created,
MediumState::LockedRead => raw::MediumState_MediumState_LockedRead,
MediumState::LockedWrite => raw::MediumState_MediumState_LockedWrite,
MediumState::Inaccessible => raw::MediumState_MediumState_Inaccessible,
MediumState::Creating => raw::MediumState_MediumState_Creating,
MediumState::Deleting => raw::MediumState_MediumState_Deleting,
}
}
}
impl From<u32> for MediumState {
fn from(value: u32) -> Self {
match value {
raw::MediumState_MediumState_NotCreated => MediumState::NotCreated,
raw::MediumState_MediumState_Created => MediumState::Created,
raw::MediumState_MediumState_LockedRead => MediumState::LockedRead,
raw::MediumState_MediumState_LockedWrite => MediumState::LockedWrite,
raw::MediumState_MediumState_Inaccessible => MediumState::Inaccessible,
raw::MediumState_MediumState_Creating => MediumState::Creating,
raw::MediumState_MediumState_Deleting => MediumState::Deleting,
_ => {
error!("MediumState::from. Unknown type: {}", value);
MediumState::NotCreated
}
}
}
}
impl Display for MediumState {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", format!("{:?}", self))
}
}