Cosmetic improvements.
[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 MARSHALLABLE_STRUCT(viewstamp)
24
25 namespace rsm_protocol {
26     enum status : rpc_protocol::status { OK, ERR, BUSY};
27
28     struct transferres {
29         string state;
30         viewstamp last;
31
32         MEMBERS(state, last)
33     };
34
35     REMOTE_PROCEDURE_BASE(0xa000);
36     REMOTE_PROCEDURE(1, invoke, (int &, rpc_protocol::proc_id_t, viewstamp, string));
37     REMOTE_PROCEDURE(2, transferreq, (transferres &, string, viewstamp, unsigned));
38     REMOTE_PROCEDURE(3, transferdonereq, (int &, string, unsigned));
39     REMOTE_PROCEDURE(4, joinreq, (string &, string, viewstamp));
40 };
41
42 MARSHALLABLE_STRUCT(rsm_protocol::transferres)
43
44 namespace rsm_test_protocol {
45     enum status : rpc_protocol::status {OK, ERR};
46     REMOTE_PROCEDURE_BASE(0x12000);
47     REMOTE_PROCEDURE(1, net_repair, (status &, int));
48     REMOTE_PROCEDURE(2, breakpoint, (status &, int));
49 };
50
51 #endif