reth_downloaders/headers/
noop.rs

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