Lots more clean-ups
[invirt/third/libt4.git] / paxos_protocol.h
index 9c2703e..5e8afdd 100644 (file)
 #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