]> AND Private Git Repository - loba.git/blobdiff - hostdata.h
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
Add per-directory local variables for Emacs.
[loba.git] / hostdata.h
index 82e133fade684cfe00cee98aafee0a315e47a0e3..722b2bcdc87340095edb6ce7bb669fec8c6f6a95 100644 (file)
@@ -2,28 +2,34 @@
 #define HOSTDATA_H
 
 #include <string>
+#include <vector>
 #include <msg/msg.h>
 
+// Helper class that associates instances of itself with each host.
+// Facilitate global operations on hosts, and retreiving of host name
+// and mailboxes.
 class hostdata {
 public:
     static void create();
     static void destroy();
+    static size_t size()                        { return hosts.size(); }
+    static const hostdata& at(size_t i)         { return hosts[i];     }
 
     hostdata(m_host_t host);
     ~hostdata();
 
-    const char* get_name() const                { return name; }
+    const char* get_name() const                { return name;              }
     const char* get_ctrl_mbox() const           { return ctrl_mbox.c_str(); }
     const char* get_data_mbox() const           { return data_mbox.c_str(); }
 
 private:
-    // linked list of hostdata's, used by create/destroy
-    static hostdata* instances;
-    hostdata* next;
+    // static list of hostdata's, used by create/destroy
+    static std::vector<hostdata> hosts;
 
     const char* name;
     std::string ctrl_mbox;
     std::string data_mbox;
+
 };
 
 #endif // !HOSTDATA_H