1#![warn(rust_2018_idioms)]
3#![warn(unreachable_pub)]
4
5use std::fmt;
6
7use mm1_address::address::Address;
8use mm1_proto::message;
9
10#[message(base_path = ::mm1_proto)]
11#[derive(Debug)]
12pub struct RequestHeader {
13 pub id: u64,
14 pub reply_to: Address,
15}
16
17#[message(base_path = ::mm1_proto)]
18#[derive(Debug)]
19pub struct ResponseHeader {
20 pub id: u64,
21}
22
23#[message(base_path = ::mm1_proto)]
24pub struct Request<Rq> {
25 pub header: RequestHeader,
26 pub payload: Rq,
27}
28
29#[message(base_path = ::mm1_proto)]
30pub struct Response<Rs> {
31 pub header: ResponseHeader,
32 pub payload: Rs,
33}
34
35impl fmt::Display for RequestHeader {
36 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
37 write!(f, "REQUEST({}!{})", self.reply_to, self.id)
38 }
39}