use std::sync::{Arc, RwLock};
use crate::handle::Turso;
#[derive(Clone, Default)]
pub struct Slot(Arc<RwLock<SlotState>>);
#[derive(Clone, Default)]
pub enum SlotState {
#[default]
Pending,
Disabled,
Open(Turso),
}
impl Slot {
pub fn with_handle(handle: Turso) -> Self {
Self(Arc::new(RwLock::new(SlotState::Open(handle))))
}
pub fn set(&self, state: SlotState) {
*self
.0
.write()
.unwrap_or_else(std::sync::PoisonError::into_inner) = state;
}
pub fn get(&self) -> SlotState {
self.0
.read()
.unwrap_or_else(std::sync::PoisonError::into_inner)
.clone()
}
}