mm1_proto_ask/
lib.rs

1// #![warn(missing_docs)]
2#![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)]
11pub struct RequestHeader {
12    pub id:       u64,
13    pub reply_to: Address,
14}
15
16#[message(base_path = ::mm1_proto)]
17pub struct ResponseHeader {
18    pub id: u64,
19}
20
21#[message(base_path = ::mm1_proto)]
22pub struct Request<Rq> {
23    pub header:  RequestHeader,
24    pub payload: Rq,
25}
26
27#[message(base_path = ::mm1_proto)]
28pub struct Response<Rs> {
29    pub header:  ResponseHeader,
30    pub payload: Rs,
31}
32
33impl fmt::Display for RequestHeader {
34    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
35        write!(f, "REQUEST({}!{})", self.reply_to, self.id)
36    }
37}