reth_downloaders/headers/
noop.rs

1use futures::Stream;
2use reth_network_p2p::headers::{
3    downloader::{HeaderDownloader, SyncTarget},
4    error::HeadersDownloaderError,
5};
6use reth_primitives::SealedHeader;
7use std::fmt::Debug;
8
9/// A [`HeaderDownloader`] implementation that does nothing.
10#[derive(Debug, Default)]
11#[non_exhaustive]
12pub struct NoopHeaderDownloader<H>(std::marker::PhantomData<H>);
13
14impl<H: Debug + Send + Sync + Unpin + 'static> HeaderDownloader for NoopHeaderDownloader<H> {
15    type Header = H;
16
17    fn update_local_head(&mut self, _: SealedHeader<H>) {}
18
19    fn update_sync_target(&mut self, _: SyncTarget) {}
20
21    fn set_batch_size(&mut self, _: usize) {}
22}
23
24impl<H> Stream for NoopHeaderDownloader<H> {
25    type Item = Result<Vec<SealedHeader<H>>, HeadersDownloaderError<H>>;
26
27    fn poll_next(
28        self: std::pin::Pin<&mut Self>,
29        _: &mut std::task::Context<'_>,
30    ) -> std::task::Poll<Option<Self::Item>> {
31        panic!("NoopHeaderDownloader shouldn't be polled.")
32    }
33}