More clean-ups
[invirt/third/libt4.git] / config.h
index 9d7b023..f3fe216 100644 (file)
--- a/config.h
+++ b/config.h
@@ -4,51 +4,52 @@
 #include <string>
 #include <vector>
 #include "paxos.h"
+#include "lock.h"
 
 class config_view_change {
- public:
-  virtual void commit_change(unsigned vid) = 0;
-  virtual ~config_view_change() {};
+    public:
+        virtual void commit_change(unsigned view_id) = 0;
+        virtual ~config_view_change() {};
 };
 
 class config : public paxos_change {
- private:
-  acceptor *acc;
-  proposer *pro;
-  rpcs *pxsrpc;
-  unsigned myvid;
-  std::string first;
-  std::string me;
-  config_view_change *vc;
-  std::vector<std::string> mems;
-  pthread_mutex_t cfg_mutex;
-  pthread_cond_t heartbeat_cond;
-  pthread_cond_t config_cond;
-  paxos_protocol::status heartbeat(std::string m, unsigned instance, int &r);
-  std::string value(std::vector<std::string> mems);
-  std::vector<std::string> members(std::string v);
-  std::vector<std::string> get_view_wo(unsigned instance);
-  bool remove_wo(std::string);
-  void reconstruct();
-  typedef enum {
-    OK,        // response and same view #
-    VIEWERR,   // response but different view #
-    FAILURE,   // no response
-  } heartbeat_t;
-  heartbeat_t doheartbeat(std::string m);
- public:
-  config(std::string _first, std::string _me, config_view_change *_vc);
-  unsigned vid() { return myvid; }
-  std::string myaddr() { return me; };
-  std::string dump() { return acc->dump(); };
-  std::vector<std::string> get_view(unsigned instance);
-  void restore(std::string s);
-  bool add(std::string, unsigned vid);
-  bool ismember(std::string m, unsigned vid);
-  void heartbeater(void);
-  void paxos_commit(unsigned instance, std::string v);
-  rpcs *get_rpcs() { return acc->get_rpcs(); }
-  void breakpoint(int b) { pro->breakpoint(b); }
+    private:
+        acceptor *paxos_acceptor;
+        proposer *paxos_proposer;
+        unsigned my_view_id;
+        std::string first;
+        std::string me;
+        config_view_change *vc;
+        std::vector<std::string> mems;
+        mutex cfg_mutex;
+        std::condition_variable config_cond;
+        paxos_protocol::status heartbeat(int &r, std::string m, unsigned instance);
+        std::string value(const std::vector<std::string> &mems) const;
+        void members(const std::string &v, std::vector<std::string> &m) const;
+        void get_view_wo(unsigned instance, std::vector<std::string> &m);
+        bool remove(const std::string &);
+        void reconstruct();
+        typedef enum {
+            OK,        // response and same view #
+            VIEWERR,   // response but different view #
+            FAILURE,   // no response
+        } heartbeat_t;
+        heartbeat_t doheartbeat(const std::string &m);
+    public:
+        config(const std::string &_first,
+               const std::string &_me,
+               config_view_change *_vc);
+        unsigned view_id() { return my_view_id; }
+        const std::string &myaddr() const { return me; };
+        std::string dump() { return paxos_acceptor->dump(); };
+        void get_view(unsigned instance, std::vector<std::string> &m);
+        void restore(const std::string &s);
+        bool add(const std::string &, unsigned view_id);
+        bool ismember(const std::string &m, unsigned view_id);
+        void heartbeater(void);
+        void paxos_commit(unsigned instance, const std::string &v);
+        rpcs *get_rpcs() { return paxos_acceptor->get_rpcs(); }
+        void breakpoint(int b) { paxos_proposer->breakpoint(b); }
 };
 
 #endif