Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
don't give the properties to the Link constructor either
authorMartin Quinson <martin.quinson@loria.fr>
Sun, 13 Nov 2016 10:54:57 +0000 (11:54 +0100)
committerMartin Quinson <martin.quinson@loria.fr>
Sun, 13 Nov 2016 10:54:57 +0000 (11:54 +0100)
src/surf/network_cm02.cpp
src/surf/network_cm02.hpp
src/surf/network_constant.cpp
src/surf/network_constant.hpp
src/surf/network_interface.cpp
src/surf/network_interface.hpp
src/surf/network_ns3.cpp
src/surf/network_ns3.hpp
src/surf/ptask_L07.cpp
src/surf/ptask_L07.hpp
src/surf/sg_platf.cpp

index 0824bdb..3a27f59 100644 (file)
@@ -153,7 +153,7 @@ NetworkCm02Model::NetworkCm02Model()
 
   maxminSystem_ = lmm_system_new(selectiveUpdate_);
 
-  routing_model_create(createLink("__loopback__", 498000000, 0.000015, SURF_LINK_FATPIPE, nullptr));
+  routing_model_create(createLink("__loopback__", 498000000, 0.000015, SURF_LINK_FATPIPE));
 
   if (updateMechanism_ == UM_LAZY) {
     actionHeap_ = xbt_heap_new(8, nullptr);
@@ -171,10 +171,10 @@ NetworkCm02Model::NetworkCm02Model(void (*specificSolveFun)(lmm_system_t self))
 
 NetworkCm02Model::~NetworkCm02Model() {}
 
-Link* NetworkCm02Model::createLink(const char *name, double bandwidth, double latency, e_surf_link_sharing_policy_t policy,
-    xbt_dict_t properties)
+Link* NetworkCm02Model::createLink(const char* name, double bandwidth, double latency,
+                                   e_surf_link_sharing_policy_t policy)
 {
-  return new NetworkCm02Link(this, name, properties, bandwidth, latency, policy, maxminSystem_);
+  return new NetworkCm02Link(this, name, bandwidth, latency, policy, maxminSystem_);
 }
 
 void NetworkCm02Model::updateActionsStateLazy(double now, double /*delta*/)
@@ -395,9 +395,9 @@ void NetworkCm02Model::gapAppend(double size, const Link* link, NetworkAction* a
 /************
  * Resource *
  ************/
-NetworkCm02Link::NetworkCm02Link(NetworkCm02Model* model, const char* name, xbt_dict_t props, double bandwidth,
-                                 double latency, e_surf_link_sharing_policy_t policy, lmm_system_t system)
-    : Link(model, name, lmm_constraint_new(system, this, sg_bandwidth_factor * bandwidth), props)
+NetworkCm02Link::NetworkCm02Link(NetworkCm02Model* model, const char* name, double bandwidth, double latency,
+                                 e_surf_link_sharing_policy_t policy, lmm_system_t system)
+    : Link(model, name, lmm_constraint_new(system, this, sg_bandwidth_factor * bandwidth))
 {
   bandwidth_.scale = 1.0;
   bandwidth_.peak  = bandwidth;
index 27e419b..e231d3a 100644 (file)
@@ -41,8 +41,8 @@ namespace simgrid {
       NetworkCm02Model();
       explicit NetworkCm02Model(void (*solve_fun)(lmm_system_t self));
       virtual ~NetworkCm02Model();
-      Link* createLink(const char *name, double bandwidth,  double latency, e_surf_link_sharing_policy_t policy,
-          xbt_dict_t properties) override;
+      Link* createLink(const char* name, double bandwidth, double latency,
+                       e_surf_link_sharing_policy_t policy) override;
       void updateActionsStateLazy(double now, double delta) override;
       void updateActionsStateFull(double now, double delta) override;
       Action* communicate(s4u::Host* src, s4u::Host* dst, double size, double rate) override;
@@ -57,9 +57,8 @@ namespace simgrid {
 
     class NetworkCm02Link : public Link {
     public:
-      NetworkCm02Link(NetworkCm02Model *model, const char *name, xbt_dict_t props,
-          double bandwidth, double latency, e_surf_link_sharing_policy_t policy,
-          lmm_system_t system);
+      NetworkCm02Link(NetworkCm02Model* model, const char* name, double bandwidth, double latency,
+                      e_surf_link_sharing_policy_t policy, lmm_system_t system);
       ~NetworkCm02Link() override;
       void apply_event(tmgr_trace_iterator_t event, double value) override;
       void setBandwidth(double value) override;
index 4581f26..f349fbd 100644 (file)
@@ -22,12 +22,13 @@ void surf_network_model_init_Constant()
 
 namespace simgrid {
   namespace surf {
-    Link* NetworkConstantModel::createLink(const char *name, double bw, double lat, e_surf_link_sharing_policy_t policy,
-        xbt_dict_t properties) {
+  Link* NetworkConstantModel::createLink(const char* name, double bw, double lat, e_surf_link_sharing_policy_t policy)
+  {
 
-      xbt_die("Refusing to create the link %s: there is no link in the Constant network model. "
-          "Please remove any link from your platform (and switch to routing='None')", name);
-      return nullptr;
+    xbt_die("Refusing to create the link %s: there is no link in the Constant network model. "
+            "Please remove any link from your platform (and switch to routing='None')",
+            name);
+    return nullptr;
     }
 
     double NetworkConstantModel::nextOccuringEvent(double /*now*/)
index 58e8ce9..ffb1659 100644 (file)
@@ -30,7 +30,7 @@ namespace simgrid {
       double nextOccuringEvent(double now) override;
       void updateActionsState(double now, double delta) override;
 
-      Link* createLink(const char *name, double bw, double lat, e_surf_link_sharing_policy_t policy, xbt_dict_t properties) override;
+      Link* createLink(const char* name, double bw, double lat, e_surf_link_sharing_policy_t policy) override;
     };
 
     /**********
index 493b71b..89819e1 100644 (file)
@@ -147,8 +147,8 @@ namespace simgrid {
      * Resource *
      ************/
 
-    Link::Link(simgrid::surf::NetworkModel* model, const char* name, lmm_constraint_t constraint, xbt_dict_t props)
-        : Resource(model, name, constraint), PropertyHolder(props)
+    Link::Link(simgrid::surf::NetworkModel* model, const char* name, lmm_constraint_t constraint)
+        : Resource(model, name, constraint), PropertyHolder(nullptr)
     {
       if (strcmp(name,"__loopback__"))
         xbt_assert(!Link::byName(name), "Link '%s' declared several times in the platform.", name);
index 1354e73..afeadcb 100644 (file)
@@ -60,10 +60,9 @@ namespace simgrid {
        * @param bandwidth The initial bandwidth of the Link in bytes per second
        * @param latency The initial latency of the Link in seconds
        * @param policy The sharing policy of the Link
-       * @param props Dictionary of properties associated to this Link
        */
-      virtual Link* createLink(const char *name, double bandwidth, double latency,
-          e_surf_link_sharing_policy_t policy, xbt_dict_t properties)=0;
+      virtual Link* createLink(const charname, double bandwidth, double latency,
+                               e_surf_link_sharing_policy_t policy) = 0;
 
       /**
        * @brief Create a communication between two hosts.
@@ -135,7 +134,7 @@ namespace simgrid {
         public:
 
       /** @brief Constructor of LMM links */
-          Link(simgrid::surf::NetworkModel* model, const char* name, lmm_constraint_t constraint, xbt_dict_t props);
+          Link(simgrid::surf::NetworkModel* model, const char* name, lmm_constraint_t constraint);
 
           /* Link destruction logic */
           /**************************/
index d4b933b..267b726 100644 (file)
@@ -193,10 +193,10 @@ NetworkNS3Model::~NetworkNS3Model() {
   xbt_dict_free(&flowFromSock);
 }
 
-Link* NetworkNS3Model::createLink(const char *name, double bandwidth, double latency, e_surf_link_sharing_policy_t policy,
-    xbt_dict_t properties){
-
-  return new LinkNS3(this, name, properties, bandwidth, latency);
+Link* NetworkNS3Model::createLink(const char* name, double bandwidth, double latency,
+                                  e_surf_link_sharing_policy_t policy)
+{
+  return new LinkNS3(this, name, bandwidth, latency);
 }
 
 Action* NetworkNS3Model::communicate(s4u::Host* src, s4u::Host* dst, double size, double rate)
@@ -283,8 +283,8 @@ void NetworkNS3Model::updateActionsState(double now, double delta)
  * Resource *
  ************/
 
-LinkNS3::LinkNS3(NetworkNS3Model* model, const char* name, xbt_dict_t props, double bandwidth, double latency)
-    : Link(model, name, nullptr, props)
+LinkNS3::LinkNS3(NetworkNS3Model* model, const char* name, double bandwidth, double latency)
+    : Link(model, name, nullptr)
 {
   bandwidth_.peak = bandwidth;
   latency_.peak   = latency;
index 75e414e..b1162b3 100644 (file)
@@ -19,8 +19,7 @@ class NetworkNS3Model : public NetworkModel {
 public:
   NetworkNS3Model();
   ~NetworkNS3Model();
-  Link* createLink(const char *name, double bandwidth, double latency,
-      e_surf_link_sharing_policy_t policy, xbt_dict_t properties) override;
+  Link* createLink(const char* name, double bandwidth, double latency, e_surf_link_sharing_policy_t policy) override;
   Action* communicate(s4u::Host* src, s4u::Host* dst, double size, double rate) override;
   double nextOccuringEvent(double now) override;
   bool nextOccuringEventIsIdempotent() {return false;}
@@ -32,7 +31,7 @@ public:
  ************/
 class LinkNS3 : public Link {
 public:
-  LinkNS3(NetworkNS3Model *model, const char *name, xbt_dict_t props, double bandwidth, double latency);
+  explicit LinkNS3(NetworkNS3Model* model, const char* name, double bandwidth, double latency);
   ~LinkNS3();
 
   void apply_event(tmgr_trace_iterator_t event, double value) override;
index 33f500d..caee551 100644 (file)
@@ -41,7 +41,7 @@ HostL07Model::HostL07Model() : HostModel() {
   surf_network_model = new NetworkL07Model(this,maxminSystem_);
   surf_cpu_model_pm = new CpuL07Model(this,maxminSystem_);
 
-  routing_model_create(surf_network_model->createLink("__loopback__", 498000000, 0.000015, SURF_LINK_FATPIPE, nullptr));
+  routing_model_create(surf_network_model->createLink("__loopback__", 498000000, 0.000015, SURF_LINK_FATPIPE));
 }
 
 HostL07Model::~HostL07Model() = default;
@@ -249,10 +249,10 @@ Cpu *CpuL07Model::createCpu(simgrid::s4u::Host *host,  std::vector<double> *spee
   return new CpuL07(this, host, speedPerPstate, core);
 }
 
-Link* NetworkL07Model::createLink(const char *name, double bandwidth, double latency,
-    e_surf_link_sharing_policy_t policy, xbt_dict_t properties)
+Link* NetworkL07Model::createLink(const charname, double bandwidth, double latency,
+                                  e_surf_link_sharing_policy_t policy)
 {
-  return new LinkL07(this, name, properties, bandwidth, latency, policy);
+  return new LinkL07(this, name, bandwidth, latency, policy);
 }
 
 /************
@@ -267,9 +267,9 @@ CpuL07::CpuL07(CpuL07Model* model, simgrid::s4u::Host* host, std::vector<double>
 
 CpuL07::~CpuL07()=default;
 
-LinkL07::LinkL07(NetworkL07Model* model, const char* name, xbt_dict_t props, double bandwidth, double latency,
+LinkL07::LinkL07(NetworkL07Model* model, const char* name, double bandwidth, double latency,
                  e_surf_link_sharing_policy_t policy)
-    : Link(model, name, lmm_constraint_new(model->getMaxminSystem(), this, bandwidth), props)
+    : Link(model, name, lmm_constraint_new(model->getMaxminSystem(), this, bandwidth))
 {
   bandwidth_.peak = bandwidth;
   latency_.peak   = latency;
index 78127ce..1b04286 100644 (file)
@@ -58,9 +58,7 @@ class NetworkL07Model : public NetworkModel {
 public:
   NetworkL07Model(HostL07Model *hmodel, lmm_system_t sys);
   ~NetworkL07Model();
-  Link* createLink(const char *name, double bandwidth, double latency,
-      e_surf_link_sharing_policy_t policy,
-      xbt_dict_t properties) override;
+  Link* createLink(const char* name, double bandwidth, double latency, e_surf_link_sharing_policy_t policy) override;
 
   Action* communicate(s4u::Host* src, s4u::Host* dst, double size, double rate) override;
 
@@ -85,8 +83,8 @@ protected:
 
 class LinkL07 : public Link {
 public:
-  LinkL07(NetworkL07Model *model, const char* name, xbt_dict_t props,
-      double bandwidth, double latency, e_surf_link_sharing_policy_t policy);
+  LinkL07(NetworkL07Model* model, const char* name, double bandwidth, double latency,
+          e_surf_link_sharing_policy_t policy);
   ~LinkL07(){ };
   bool isUsed() override;
   void apply_event(tmgr_trace_iterator_t event, double value) override;
index 82dde2f..cb5a0d4 100644 (file)
@@ -158,7 +158,15 @@ void sg_platf_new_link(sg_platf_link_cbarg_t link){
     names.push_back(xbt_strdup(link->id));
   }
   for (auto link_name : names) {
-    Link *l = surf_network_model->createLink(link_name, link->bandwidth, link->latency, link->policy, link->properties);
+    Link* l = surf_network_model->createLink(link_name, link->bandwidth, link->latency, link->policy);
+
+    if (link->properties) {
+      xbt_dict_cursor_t cursor = nullptr;
+      char *key, *data;
+      xbt_dict_foreach (link->properties, cursor, key, data)
+        l->setProperty(key, data);
+      xbt_dict_free(&link->properties);
+    }
 
     if (link->latency_trace)
       l->setLatencyTrace(link->latency_trace);