mm1_proto_named/
lib.rs

1use std::time::Duration;
2
3use mm1_address::address::Address;
4use mm1_common::errors::error_of::ErrorOf;
5use mm1_common::impl_error_kind;
6use mm1_proto::message;
7
8#[message(base_path = ::mm1_proto)]
9#[derive(Debug)]
10pub struct RegisterRequest<K> {
11    pub key:       K,
12    pub addr:      Address,
13    pub key_props: KeyProps,
14    pub reg_props: RegProps,
15}
16
17pub type RegisterResponse = Result<(), ErrorOf<RegisterErrorKind>>;
18
19#[message(base_path = ::mm1_proto)]
20#[derive(Debug)]
21pub struct UnregisterRequest<K> {
22    pub key:  K,
23    pub addr: Address,
24}
25
26pub type UnregisterResponse = Result<(), ErrorOf<UnregisterErrorKind>>;
27
28#[message(base_path = ::mm1_proto)]
29#[derive(Debug)]
30pub struct ResolveRequest<K> {
31    pub key: K,
32}
33
34pub type ResolveResponse = Result<Vec<(Address, Duration)>, ErrorOf<ResolveErrorKind>>;
35
36#[message(base_path = ::mm1_proto)]
37#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
38pub enum RegisterErrorKind {
39    Conflict,
40    Internal,
41}
42
43#[message(base_path = ::mm1_proto)]
44#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
45pub enum UnregisterErrorKind {
46    NotFound,
47    Internal,
48}
49
50#[message(base_path = ::mm1_proto)]
51#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
52pub enum ResolveErrorKind {
53    Internal,
54}
55
56#[message(base_path = ::mm1_proto)]
57#[derive(Debug)]
58pub struct KeyProps {
59    pub exclusive: bool,
60}
61
62#[message(base_path = ::mm1_proto)]
63#[derive(Debug)]
64pub struct RegProps {
65    pub ttl: Duration,
66}
67
68impl_error_kind!(RegisterErrorKind);
69impl_error_kind!(UnregisterErrorKind);
70impl_error_kind!(ResolveErrorKind);