hotshot_new_protocol/message/
payload.rs1use hotshot_types::{
2 data::{VidCommitment2, ViewNumber},
3 vote::HasViewNumber,
4};
5use serde::{Deserialize, Serialize};
6
7use crate::message::fetch::{Request, Response};
8
9pub type PayloadFetchRequest = Request<PayloadRequestBody>;
10pub type PayloadFetchResponse = Response<PayloadResponseBody>;
11
12#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Hash, Eq)]
13pub struct PayloadRequestBody;
14
15#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Hash, Eq)]
16pub enum PayloadResponseBody {
17 NotAvailable,
18 TooLarge,
19 Payload {
20 commitment: VidCommitment2,
21 #[serde(with = "serde_bytes")]
22 data: Vec<u8>,
23 },
24}
25
26#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Hash, Eq)]
27pub enum PayloadFetchMessage {
28 Req(PayloadFetchRequest),
29 Res(PayloadFetchResponse),
30}
31
32impl HasViewNumber for PayloadFetchMessage {
33 fn view_number(&self) -> ViewNumber {
34 match self {
35 Self::Req(r) => r.view_number(),
36 Self::Res(r) => r.view_number(),
37 }
38 }
39}