-inline unmarshall &
-operator>>(unmarshall &u, paxos_protocol::preparearg &a)
-{
- u >> a.instance;
- u >> a.n;
- return u;
-}
-
-inline marshall &
-operator<<(marshall &m, paxos_protocol::preparearg a)
-{
- m << a.instance;
- m << a.n;
- return m;
-}
-
-inline unmarshall &
-operator>>(unmarshall &u, paxos_protocol::prepareres &r)
-{
- u >> r.oldinstance;
- u >> r.accept;
- u >> r.n_a;
- u >> r.v_a;
- return u;
-}
-
-inline marshall &
-operator<<(marshall &m, paxos_protocol::prepareres r)
-{
- m << r.oldinstance;
- m << r.accept;
- m << r.n_a;
- m << r.v_a;
- return m;
-}
-
-inline unmarshall &
-operator>>(unmarshall &u, paxos_protocol::acceptarg &a)
-{
- u >> a.instance;
- u >> a.n;
- u >> a.v;
- return u;
-}
-
-inline marshall &
-operator<<(marshall &m, paxos_protocol::acceptarg a)
-{
- m << a.instance;
- m << a.n;
- m << a.v;
- return m;
-}
-
-inline unmarshall &
-operator>>(unmarshall &u, paxos_protocol::decidearg &a)
-{
- u >> a.instance;
- u >> a.v;
- return u;
-}
+class paxos_protocol {
+ public:
+ enum status : status_t { OK, ERR };
+ enum rpc_numbers : proc_t {
+ preparereq = 0x11001,
+ acceptreq,
+ decidereq,
+ heartbeat,
+ };
+
+ struct prepareres {
+ bool oldinstance;
+ bool accept;
+ prop_t n_a;
+ string v_a;
+
+ MEMBERS(oldinstance, accept, n_a, v_a)
+ };
+};