subspace_networking/protocols/request_response/handlers/
piece_by_index.rs1use crate::protocols::request_response::handlers::generic_request_handler::{
6    GenericRequest, GenericRequestHandler,
7};
8use parity_scale_codec::{Decode, Encode};
9use std::sync::Arc;
10use subspace_core_primitives::pieces::{Piece, PieceIndex};
11
12#[derive(Debug, Clone, Eq, PartialEq, Encode, Decode)]
14pub struct PieceByIndexRequest {
15    pub piece_index: PieceIndex,
17    pub cached_pieces: Arc<Vec<PieceIndex>>,
21}
22
23impl GenericRequest for PieceByIndexRequest {
24    const PROTOCOL_NAME: &'static str = "/subspace/piece-by-index/0.1.0";
25    const LOG_TARGET: &'static str = "piece-by-index-request-response-handler";
26    type Response = PieceByIndexResponse;
27}
28
29impl PieceByIndexRequest {
30    pub const RECOMMENDED_LIMIT: usize = 128;
33}
34
35#[derive(Debug, PartialEq, Eq, Clone, Encode, Decode)]
37pub struct PieceByIndexResponse {
38    pub piece: Option<Piece>,
40    pub cached_pieces: Vec<PieceIndex>,
43}
44
45pub type PieceByIndexRequestHandler = GenericRequestHandler<PieceByIndexRequest>;