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

Private GIT Repository
Do not call flush automatically in communcator::send...
[loba.git] / deployment.h
index 4dde4806fae3ec5f09c92fb9c0f0c95b01d65dfa..3e71df584efa6abaa0db0c9186f0262e385e42bb 100644 (file)
@@ -1,8 +1,48 @@
 #ifndef DEPLOYMENT_H
 #define DEPLOYMENT_H
 
+#include <vector>
+
+// Deploy an application automatically, according to the global parameters
 void MY_launch_application();
 
+// Base class for deployment generators...
+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: