reth_downloaders/bodies/
noop.rs

1use alloy_primitives::BlockNumber;
2use futures::Stream;
3use reth_network_p2p::{
4    bodies::{downloader::BodyDownloader, response::BlockResponse},
5    error::{DownloadError, DownloadResult},
6};
7use reth_primitives_traits::Block;
8use std::{fmt::Debug, ops::RangeInclusive};
9
10/// A [`BodyDownloader`] implementation that does nothing.
11#[derive(Debug, Default)]
12#[non_exhaustive]
13pub struct NoopBodiesDownloader<B> {
14    _block: std::marker::PhantomData<B>,
15}
16
17impl<B: Block + 'static> BodyDownloader for NoopBodiesDownloader<B> {
18    type Block = B;
19
20    fn set_download_range(&mut self, _: RangeInclusive<BlockNumber>) -> DownloadResult<()> {
21        Ok(())
22    }
23}
24
25impl<B: Block + 'static> Stream for NoopBodiesDownloader<B> {
26    type Item = Result<Vec<BlockResponse<B>>, DownloadError>;
27
28    fn poll_next(
29        self: std::pin::Pin<&mut Self>,
30        _: &mut std::task::Context<'_>,
31    ) -> std::task::Poll<Option<Self::Item>> {
32        panic!("NoopBodiesDownloader shouldn't be polled.")
33    }
34}