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>;