subspace_networking/protocols/request_response/handlers/
segment_header.rs1use super::generic_request_handler::{GenericRequest, GenericRequestHandler};
7use parity_scale_codec::{Decode, Encode};
8use std::sync::Arc;
9use subspace_core_primitives::segments::{SegmentHeader, SegmentIndex};
10
11#[derive(Debug, Clone, Eq, PartialEq, Encode, Decode)]
13pub enum SegmentHeaderRequest {
14    SegmentIndexes {
16        segment_indexes: Arc<Vec<SegmentIndex>>,
20    },
21    LastSegmentHeaders {
23        limit: u32,
25    },
26}
27
28impl GenericRequest for SegmentHeaderRequest {
29    const PROTOCOL_NAME: &'static str = "/subspace/segment-headers-by-indexes/0.1.0";
30    const LOG_TARGET: &'static str = "segment-headers-by-indexes-request-response-handler";
31    type Response = SegmentHeaderResponse;
32}
33
34#[derive(Debug, PartialEq, Eq, Clone, Encode, Decode)]
36pub struct SegmentHeaderResponse {
37    pub segment_headers: Vec<SegmentHeader>,
39}
40
41pub type SegmentHeaderBySegmentIndexesRequestHandler = GenericRequestHandler<SegmentHeaderRequest>;