use std::rc::Rc;
use anyhow::Result;
use cid::Cid;
use fvm_ipld_blockstore::MemoryBlockstore;
#[derive(Debug, Clone)]
pub struct SharedMemoryBlockstore {
store: Rc<MemoryBlockstore>,
}
impl SharedMemoryBlockstore {
pub fn new() -> Self {
Self { store: Rc::new(MemoryBlockstore::new()) }
}
}
impl Default for SharedMemoryBlockstore {
fn default() -> Self {
Self::new()
}
}
impl fvm_ipld_blockstore::Blockstore for SharedMemoryBlockstore {
fn get(&self, k: &Cid) -> Result<Option<Vec<u8>>> {
self.store.get(k)
}
fn put_keyed(&self, k: &Cid, block: &[u8]) -> Result<()> {
self.store.put_keyed(k, block)
}
fn has(&self, k: &Cid) -> Result<bool> {
self.store.has(k)
}
}