1601bcb65694a3d58a24704b3cf3dfaeaeac3a90
[invirt/third/libt4.git] / rsm_protocol.h
1 #ifndef rsm_protocol_h
2 #define rsm_protocol_h
3
4 #include "types.h"
5 #include "rpc/rpc.h"
6
7 class rsm_client_protocol {
8     public:
9         enum status : status_t {OK, ERR, NOTPRIMARY, BUSY};
10         enum rpc_numbers : proc_t {
11             invoke = 0x9001,
12             members,
13         };
14 };
15
16 struct viewstamp {
17     viewstamp (unsigned int _vid = 0, unsigned int _seqno = 0) : vid(_vid), seqno(_seqno) {}
18     unsigned int vid;
19     unsigned int seqno;
20     inline void operator++(int) { seqno++; }
21
22     MEMBERS(vid, seqno)
23     LEXICOGRAPHIC_COMPARISON(viewstamp)
24 };
25
26 MARSHALLABLE(viewstamp)
27
28 class rsm_protocol {
29     public:
30         enum status : status_t { OK, ERR, BUSY};
31         enum rpc_numbers : proc_t {
32             invoke = 0xa001,
33             transferreq,
34             transferdonereq,
35             joinreq,
36         };
37
38         struct transferres {
39             string state;
40             viewstamp last;
41
42             MEMBERS(state, last)
43         };
44 };
45
46 MARSHALLABLE(rsm_protocol::transferres)
47
48 class rsm_test_protocol {
49     public:
50         enum status : status_t {OK, ERR};
51         enum rpc_numbers : proc_t {
52             net_repair = 0x12001,
53             breakpoint = 0x12002,
54         };
55 };
56
57 #endif