use crate::block_relay_protocol::{BlockDownloader as BlockDownloaderT, BlockResponseError};
use futures::channel::oneshot;
use sc_network::{ProtocolName, RequestFailure};
use sc_network_common::sync::message::{BlockData, BlockRequest};
use sc_network_types::PeerId;
use sp_runtime::traits::Block as BlockT;
mockall::mock! {
#[derive(Debug)]
pub BlockDownloader<Block: BlockT> {}
#[async_trait::async_trait]
impl<Block: BlockT> BlockDownloaderT<Block> for BlockDownloader<Block> {
fn protocol_name(&self) -> &ProtocolName;
async fn download_blocks(
&self,
who: PeerId,
request: BlockRequest<Block>,
) -> Result<Result<(Vec<u8>, ProtocolName), RequestFailure>, oneshot::Canceled>;
fn block_response_into_blocks(
&self,
request: &BlockRequest<Block>,
response: Vec<u8>,
) -> Result<Vec<BlockData<Block>>, BlockResponseError>;
}
}