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

Private GIT Repository
Improve documentation.
[loba.git] / deployment.h
index 4dde4806fae3ec5f09c92fb9c0f0c95b01d65dfa..2009b36c8a8d28e58f6823fc5a6bbe4378a8599b 100644 (file)
@@ -1,8 +1,46 @@
 #ifndef DEPLOYMENT_H
 #define DEPLOYMENT_H
 
+#include <vector>
+
 void MY_launch_application();
 
+class deployment_generator {
+public:
+    deployment_generator();
+
+    size_t size() const { return hosts.size(); }
+    void set_load(int host, double load);
+    void set_neighbor(int host, int neighbor);
+    void set_link(int host1, int host2);
+
+    virtual void generate() = 0;
+    void deploy();
+
+private:
+    struct host_parameters {
+        double load;
+        std::vector<int> neighbors;
+    };
+
+    std::vector<host_parameters> hosts;
+};
+
+#define DEPLOYMENT(name)                                        \
+    class deployment_ ## name: public deployment_generator {    \
+    public: void generate();                                    \
+    }
+
+DEPLOYMENT(btree);
+DEPLOYMENT(clique);
+DEPLOYMENT(hcube);
+DEPLOYMENT(line);
+DEPLOYMENT(ring);
+DEPLOYMENT(star);
+// DEPLOYMENT(torus);
+
+#undef DEPLOYMENT
+
 #endif // !DEPLOYMENT_H
 
 // Local variables: