Skip to main content

HeadersClient

Trait HeadersClient 

pub trait HeadersClient: DownloadClient {
    type Header: BlockHeader;
    type Output: Future<Output = Result<WithPeerId<Vec<Self::Header>>, RequestError>> + Sync + Send + Unpin;

    // Required method
    fn get_headers_with_priority(
        &self,
        request: HeadersRequest,
        priority: Priority,
    ) -> Self::Output;

    // Provided methods
    fn get_headers(&self, request: HeadersRequest) -> Self::Output { ... }
    fn get_header(
        &self,
        start: HashOrNumber,
    ) -> SingleHeaderRequest<Self::Output> { ... }
    fn get_header_with_priority(
        &self,
        start: HashOrNumber,
        priority: Priority,
    ) -> SingleHeaderRequest<Self::Output> { ... }
}
Expand description

The block headers downloader client

Required Associated Types§

type Header: BlockHeader

The header type this client fetches.

type Output: Future<Output = Result<WithPeerId<Vec<Self::Header>>, RequestError>> + Sync + Send + Unpin

The headers future type

Required Methods§

fn get_headers_with_priority( &self, request: HeadersRequest, priority: Priority, ) -> Self::Output

Sends the header request to the p2p network with priority set and returns the header response received from a peer.

Provided Methods§

fn get_headers(&self, request: HeadersRequest) -> Self::Output

Sends the header request to the p2p network and returns the header response received from a peer.

fn get_header(&self, start: HashOrNumber) -> SingleHeaderRequest<Self::Output>

Fetches a single header for the requested number or hash.

fn get_header_with_priority( &self, start: HashOrNumber, priority: Priority, ) -> SingleHeaderRequest<Self::Output>

Fetches a single header for the requested number or hash with priority

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

§

impl<'a, T> HeadersClient for &'a T
where T: 'a + HeadersClient + ?Sized, &'a T: DownloadClient,

§

type Header = <T as HeadersClient>::Header

§

type Output = <T as HeadersClient>::Output

§

fn get_headers( &self, request: HeadersRequest, ) -> <&'a T as HeadersClient>::Output

§

fn get_headers_with_priority( &self, request: HeadersRequest, priority: Priority, ) -> <&'a T as HeadersClient>::Output

§

fn get_header( &self, start: HashOrNumber, ) -> SingleHeaderRequest<<&'a T as HeadersClient>::Output>

§

fn get_header_with_priority( &self, start: HashOrNumber, priority: Priority, ) -> SingleHeaderRequest<<&'a T as HeadersClient>::Output>

§

impl<A, B> HeadersClient for Either<A, B>
where A: HeadersClient, B: HeadersClient<Header = <A as HeadersClient>::Header>,

§

type Header = <A as HeadersClient>::Header

§

type Output = Either<<A as HeadersClient>::Output, <B as HeadersClient>::Output>

§

fn get_headers_with_priority( &self, request: HeadersRequest, priority: Priority, ) -> <Either<A, B> as HeadersClient>::Output

§

impl<T> HeadersClient for Arc<T>
where T: HeadersClient + ?Sized, Arc<T>: DownloadClient,

§

type Header = <T as HeadersClient>::Header

§

type Output = <T as HeadersClient>::Output

§

fn get_headers( &self, request: HeadersRequest, ) -> <Arc<T> as HeadersClient>::Output

§

fn get_headers_with_priority( &self, request: HeadersRequest, priority: Priority, ) -> <Arc<T> as HeadersClient>::Output

§

fn get_header( &self, start: HashOrNumber, ) -> SingleHeaderRequest<<Arc<T> as HeadersClient>::Output>

§

fn get_header_with_priority( &self, start: HashOrNumber, priority: Priority, ) -> SingleHeaderRequest<<Arc<T> as HeadersClient>::Output>

§

impl<T> HeadersClient for Box<T>
where T: HeadersClient + ?Sized, Box<T>: DownloadClient,

§

type Header = <T as HeadersClient>::Header

§

type Output = <T as HeadersClient>::Output

§

fn get_headers( &self, request: HeadersRequest, ) -> <Box<T> as HeadersClient>::Output

§

fn get_headers_with_priority( &self, request: HeadersRequest, priority: Priority, ) -> <Box<T> as HeadersClient>::Output

§

fn get_header( &self, start: HashOrNumber, ) -> SingleHeaderRequest<<Box<T> as HeadersClient>::Output>

§

fn get_header_with_priority( &self, start: HashOrNumber, priority: Priority, ) -> SingleHeaderRequest<<Box<T> as HeadersClient>::Output>

Implementors§

§

impl HeadersClient for TestFullBlockClient

Implements the HeadersClient trait for the TestFullBlockClient struct.

§

type Header = Header

§

type Output = Ready<Result<WithPeerId<Vec<Header>>, RequestError>>

§

impl HeadersClient for TestHeadersClient

§

type Header = Header

§

type Output = Pin<Box<dyn Future<Output = Result<WithPeerId<Vec<Header>>, RequestError>> + Send + Sync>>

§

impl<Net> HeadersClient for NoopFullBlockClient<Net>
where Net: NetworkPrimitives,

§

type Header = <Net as NetworkPrimitives>::BlockHeader

§

type Output = Ready<Result<WithPeerId<Vec<<NoopFullBlockClient<Net> as HeadersClient>::Header>>, RequestError>>