hotshot_new_protocol/message/
fetch.rs1use hotshot_types::{data::ViewNumber, vote::HasViewNumber};
2use serde::{Deserialize, Serialize};
3
4#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Hash, Eq)]
5pub struct Request<T> {
6 view: ViewNumber,
7 body: T,
8}
9
10impl<T> Request<T> {
11 pub fn new(view: ViewNumber, body: T) -> Self {
12 Self { view, body }
13 }
14
15 pub fn body(&self) -> &T {
16 &self.body
17 }
18
19 pub fn into_body(self) -> T {
20 self.body
21 }
22}
23
24#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Hash, Eq)]
25pub struct Response<T> {
26 view: ViewNumber,
27 body: T,
28}
29
30impl<T> Response<T> {
31 pub fn new(view: ViewNumber, body: T) -> Self {
32 Self { view, body }
33 }
34
35 pub fn body(&self) -> &T {
36 &self.body
37 }
38
39 pub fn into_body(self) -> T {
40 self.body
41 }
42}
43
44impl<T> HasViewNumber for Request<T> {
45 fn view_number(&self) -> ViewNumber {
46 self.view
47 }
48}
49
50impl<T> HasViewNumber for Response<T> {
51 fn view_number(&self) -> ViewNumber {
52 self.view
53 }
54}