28773c139166cd8472c6b63c32d36d1e5c17a0f3
[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 namespace rsm_client_protocol {
8     enum status : rpc_protocol::status {OK, ERR, NOTPRIMARY, BUSY};
9     REMOTE_PROCEDURE_BASE(0x9000);
10     REMOTE_PROCEDURE(1, invoke, (string &, rpc_protocol::proc_id_t, string));
11     REMOTE_PROCEDURE(2, members, (vector<string> &, int));
12 }
13
14 struct viewstamp {
15     unsigned int vid;
16     unsigned int seqno;
17     inline void operator++(int) { seqno++; }
18
19     MEMBERS(vid, seqno)
20     LEXICOGRAPHIC_COMPARISON(viewstamp)
21 };
22
23 namespace rsm_protocol {
24     enum status : rpc_protocol::status { OK, ERR, BUSY};
25
26     struct transferres {
27         string state;
28         viewstamp last;
29
30         MEMBERS(state, last)
31     };
32
33     REMOTE_PROCEDURE_BASE(0xa000);
34     REMOTE_PROCEDURE(1, invoke, (int &, rpc_protocol::proc_id_t, viewstamp, string));
35     REMOTE_PROCEDURE(2, transferreq, (transferres &, string, viewstamp, unsigned));
36     REMOTE_PROCEDURE(3, transferdonereq, (int &, string, unsigned));
37     REMOTE_PROCEDURE(4, joinreq, (string &, string, viewstamp));
38 }
39
40 namespace rsm_test_protocol {
41     enum status : rpc_protocol::status {OK, ERR};
42     REMOTE_PROCEDURE_BASE(0x12000);
43     REMOTE_PROCEDURE(1, net_repair, (status &, int));
44     REMOTE_PROCEDURE(2, breakpoint, (status &, int));
45 }
46
47 #endif