rust-ipfs 0.15.0

IPFS node implementation
Documentation
use std::sync::Arc;

use crate::error::Error;
use crate::repo::{DataStore, PinStore, References};
use crate::{PinKind, PinMode};
use futures::stream::BoxStream;
use ipld_core::cid::Cid;

use crate::repo::{BlockPut, BlockStore};

use crate::Block;

impl<B: BlockStore> BlockStore for Arc<B> {
    async fn init(&self) -> Result<(), Error> {
        (**self).init().await
    }
    async fn contains(&self, cid: &Cid) -> Result<bool, Error> {
        (**self).contains(cid).await
    }
    async fn get(&self, cid: &Cid) -> Result<Option<Block>, Error> {
        (**self).get(cid).await
    }
    async fn size(&self, cid: &[Cid]) -> Result<Option<usize>, Error> {
        (**self).size(cid).await
    }
    async fn total_size(&self) -> Result<usize, Error> {
        (**self).total_size().await
    }
    async fn put(&self, block: &Block) -> Result<(Cid, BlockPut), Error> {
        (**self).put(block).await
    }
    async fn remove(&self, cid: &Cid) -> Result<(), Error> {
        (**self).remove(cid).await
    }
    async fn remove_many(&self, blocks: BoxStream<'static, Cid>) -> BoxStream<'static, Cid> {
        (**self).remove_many(blocks).await
    }
    async fn list(&self) -> BoxStream<'static, Cid> {
        (**self).list().await
    }
}

impl<D: DataStore> DataStore for Arc<D> {
    async fn init(&self) -> Result<(), Error> {
        (**self).init().await
    }

    async fn contains(&self, key: &[u8]) -> Result<bool, Error> {
        (**self).contains(key).await
    }

    async fn get(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Error> {
        (**self).get(key).await
    }

    async fn put(&self, key: &[u8], value: &[u8]) -> Result<(), Error> {
        (**self).put(key, value).await
    }

    async fn remove(&self, key: &[u8]) -> Result<(), Error> {
        (**self).remove(key).await
    }

    async fn iter(&self) -> BoxStream<'static, (Vec<u8>, Vec<u8>)> {
        (**self).iter().await
    }
}

impl<P: PinStore> PinStore for Arc<P> {
    async fn is_pinned(&self, block: &Cid) -> Result<bool, Error> {
        (**self).is_pinned(block).await
    }

    async fn insert_direct_pin(&self, target: &Cid) -> Result<(), Error> {
        (**self).insert_direct_pin(target).await
    }

    async fn insert_recursive_pin(
        &self,
        target: &Cid,
        referenced: References<'_>,
    ) -> Result<(), Error> {
        (**self).insert_recursive_pin(target, referenced).await
    }

    async fn remove_direct_pin(&self, target: &Cid) -> Result<(), Error> {
        (**self).remove_direct_pin(target).await
    }

    async fn remove_recursive_pin(
        &self,
        target: &Cid,
        referenced: References<'_>,
    ) -> Result<(), Error> {
        (**self).remove_recursive_pin(target, referenced).await
    }

    async fn list(
        &self,
        mode: Option<PinMode>,
    ) -> BoxStream<'static, Result<(Cid, PinMode), Error>> {
        (**self).list(mode).await
    }

    async fn query(
        &self,
        ids: Vec<Cid>,
        requirement: Option<PinMode>,
    ) -> Result<Vec<(Cid, PinKind<Cid>)>, Error> {
        (**self).query(ids, requirement).await
    }
}