X-Git-Url: http://xvm.mit.edu/gitweb/invirt/third/libt4.git/blobdiff_plain/5fd8cc8409d0efadc07dfe8d6774ad9ff477663d..3abd3952c1f4441f0dd6eae9883b2d01ed9cd56b:/paxos_protocol.h diff --git a/paxos_protocol.h b/paxos_protocol.h index 9c2703e..5e8afdd 100644 --- a/paxos_protocol.h +++ b/paxos_protocol.h @@ -1,133 +1,39 @@ #ifndef paxos_protocol_h #define paxos_protocol_h -#include "rpc.h" +#include "types.h" +#include "rpc/rpc.h" struct prop_t { - unsigned n; - std::string m; -}; - -class paxos_protocol { - public: - enum xxstatus { OK, ERR }; - typedef int status; - enum rpc_numbers { - preparereq = 0x11001, - acceptreq, - decidereq, - heartbeat, - }; - - struct preparearg { - unsigned instance; - prop_t n; - }; - - struct prepareres { - bool oldinstance; - bool accept; - prop_t n_a; - std::string v_a; - }; - - struct acceptarg { - unsigned instance; - prop_t n; - std::string v; - }; - - struct decidearg { - unsigned instance; - std::string v; - }; + unsigned n; + string m; + MEMBERS(n, m) + LEXICOGRAPHIC_COMPARISON(prop_t) }; -inline unmarshall & -operator>>(unmarshall &u, prop_t &a) -{ - u >> a.n; - u >> a.m; - return u; -} - -inline marshall & -operator<<(marshall &m, prop_t a) -{ - m << a.n; - m << a.m; - return m; -} +MARSHALLABLE(prop_t) -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) + }; +}; -inline marshall & -operator<<(marshall &m, paxos_protocol::decidearg a) -{ - m << a.instance; - m << a.v; - return m; -} +MARSHALLABLE(paxos_protocol::prepareres) #endif