use std::sync::Arc;
use crate::meta_storage::MetaBackend;
use crate::meta_storage::mem::error::MemResult;
use crate::meta_storage::mem::store::MemStore;
use crate::meta_storage::mem::{
MemClient, MemConn, MemMetaError, MemResolutionQueryBuilder, MemTicketQueryBuilder, MemTx,
};
#[derive(Clone, Default)]
pub struct MemMetaStorage {
store: Arc<MemStore>,
}
impl std::fmt::Debug for MemMetaStorage {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("MemMetaStorage").finish_non_exhaustive()
}
}
impl MetaBackend for MemMetaStorage {
type Error = MemMetaError;
type Conn<'a> = MemConn;
type Tx<'a> = MemTx<'a>;
type Client<'a> = MemClient<'a>;
type Ticket<'a, const N: usize> = MemTicketQueryBuilder<'a, N>;
type Resolution<'a, const N: usize> = MemResolutionQueryBuilder<'a, N>;
async fn worker_conn(&self) -> MemResult<MemConn> {
Ok(MemConn::new(self.store.clone()))
}
async fn scheduler_conn(&self) -> MemResult<MemConn> {
Ok(MemConn::new(self.store.clone()))
}
async fn ensure_lock(&self) -> MemResult<()> {
Ok(())
}
async fn check_lock(&self) -> MemResult<()> {
Ok(())
}
}