Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
remove model from Link constructors
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Wed, 3 Mar 2021 20:18:52 +0000 (21:18 +0100)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Wed, 3 Mar 2021 21:45:42 +0000 (22:45 +0100)
src/surf/network_cm02.cpp
src/surf/network_cm02.hpp
src/surf/network_interface.cpp
src/surf/network_interface.hpp
src/surf/network_ns3.cpp
src/surf/network_ns3.hpp
src/surf/network_wifi.cpp
src/surf/network_wifi.hpp
src/surf/ptask_L07.cpp
src/surf/ptask_L07.hpp

index a63e676..ac6e216 100644 (file)
@@ -97,10 +97,10 @@ LinkImpl* NetworkCm02Model::create_link(const std::string& name, const std::vect
                                         s4u::Link::SharingPolicy policy)
 {
   if (policy == s4u::Link::SharingPolicy::WIFI)
-    return new NetworkWifiLink(this, name, bandwidths, get_maxmin_system());
+    return new NetworkWifiLink(name, bandwidths, get_maxmin_system());
 
   xbt_assert(bandwidths.size() == 1, "Non-WIFI links must use only 1 bandwidth.");
-  return new NetworkCm02Link(this, name, bandwidths[0], policy, get_maxmin_system());
+  return new NetworkCm02Link(name, bandwidths[0], policy, get_maxmin_system());
 }
 
 void NetworkCm02Model::update_actions_state_lazy(double now, double /*delta*/)
@@ -308,9 +308,9 @@ Action* NetworkCm02Model::communicate(s4u::Host* src, s4u::Host* dst, double siz
 /************
  * Resource *
  ************/
-NetworkCm02Link::NetworkCm02Link(NetworkCm02Model* model, const std::string& name, double bandwidth,
-                                 s4u::Link::SharingPolicy policy, kernel::lmm::System* system)
-    : LinkImpl(model, name, system->constraint_new(this, sg_bandwidth_factor * bandwidth))
+NetworkCm02Link::NetworkCm02Link(const std::string& name, double bandwidth, s4u::Link::SharingPolicy policy,
+                                 kernel::lmm::System* system)
+    : LinkImpl(name, system->constraint_new(this, sg_bandwidth_factor * bandwidth))
 {
   bandwidth_.scale = 1.0;
   bandwidth_.peak  = bandwidth;
index a4a8811..3460d36 100644 (file)
@@ -45,8 +45,7 @@ public:
 
 class NetworkCm02Link : public LinkImpl {
 public:
-  NetworkCm02Link(NetworkCm02Model* model, const std::string& name, double bandwidth,
-                  s4u::Link::SharingPolicy policy, lmm::System* system);
+  NetworkCm02Link(const std::string& name, double bandwidth, s4u::Link::SharingPolicy policy, lmm::System* system);
   ~NetworkCm02Link() override = default;
   void apply_event(kernel::profile::Event* event, double value) override;
   void set_bandwidth(double value) override;
index 958ef73..68c455c 100644 (file)
@@ -73,10 +73,9 @@ double NetworkModel::next_occurring_event_full(double now)
  * Resource *
  ************/
 
-LinkImpl::LinkImpl(NetworkModel* model, const std::string& name, lmm::Constraint* constraint)
-    : Resource(name), piface_(this)
+LinkImpl::LinkImpl(const std::string& name, lmm::Constraint* constraint) : Resource(name), piface_(this)
 {
-  this->set_model(model)->set_constraint(constraint);
+  this->set_constraint(constraint);
   if (name != "__loopback__")
     xbt_assert(not s4u::Link::by_name_or_null(name), "Link '%s' declared several times in the platform.", name.c_str());
 
@@ -156,6 +155,8 @@ void LinkImpl::turn_off()
 }
 void LinkImpl::seal()
 {
+  this->set_model(surf_network_model);
+
   simgrid::s4u::Link::on_creation(*get_iface());
 }
 void LinkImpl::on_bandwidth_change() const
index 0e64eb1..dab8a5c 100644 (file)
@@ -110,7 +110,7 @@ class LinkImpl : public Resource, public xbt::PropertyHolder {
   s4u::Link piface_;
 
 protected:
-  LinkImpl(NetworkModel* model, const std::string& name, lmm::Constraint* constraint);
+  LinkImpl(const std::string& name, lmm::Constraint* constraint);
   LinkImpl(const LinkImpl&) = delete;
   LinkImpl& operator=(const LinkImpl&) = delete;
   ~LinkImpl() override                 = default; // Use destroy() instead of this destructor.
index ef51371..cf95459 100644 (file)
@@ -332,7 +332,7 @@ LinkImpl* NetworkNS3Model::create_link(const std::string& name, const std::vecto
                                        s4u::Link::SharingPolicy policy)
 {
   xbt_assert(bandwidths.size() == 1, "ns-3 links must use only 1 bandwidth.");
-  return new LinkNS3(this, name, bandwidths[0], policy);
+  return new LinkNS3(name, bandwidths[0], policy);
 }
 
 Action* NetworkNS3Model::communicate(s4u::Host* src, s4u::Host* dst, double size, double rate)
@@ -432,8 +432,8 @@ void NetworkNS3Model::update_actions_state(double now, double delta)
  * Resource *
  ************/
 
-LinkNS3::LinkNS3(NetworkNS3Model* model, const std::string& name, double bandwidth, s4u::Link::SharingPolicy policy)
-    : LinkImpl(model, name, nullptr), sharing_policy_(policy)
+LinkNS3::LinkNS3(const std::string& name, double bandwidth, s4u::Link::SharingPolicy policy)
+    : LinkImpl(name, nullptr), sharing_policy_(policy)
 {
   bandwidth_.peak = bandwidth;
 }
index 4edde91..38f60c1 100644 (file)
@@ -31,8 +31,7 @@ public:
  ************/
 class LinkNS3 : public LinkImpl {
 public:
-  explicit LinkNS3(NetworkNS3Model* model, const std::string& name, double bandwidth,
-                   s4u::Link::SharingPolicy policy);
+  explicit LinkNS3(const std::string& name, double bandwidth, s4u::Link::SharingPolicy policy);
   ~LinkNS3() override;
   s4u::Link::SharingPolicy sharing_policy_;
 
index 8fd7e08..ccbbf0a 100644 (file)
@@ -17,9 +17,8 @@ namespace resource {
  * Resource *
  ************/
 
-NetworkWifiLink::NetworkWifiLink(NetworkCm02Model* model, const std::string& name, std::vector<double> bandwidths,
-                                 lmm::System* system)
-    : LinkImpl(model, name, system->constraint_new(this, 1))
+NetworkWifiLink::NetworkWifiLink(const std::string& name, std::vector<double> bandwidths, lmm::System* system)
+    : LinkImpl(name, system->constraint_new(this, 1))
 {
   for (auto bandwidth : bandwidths)
     bandwidths_.push_back({bandwidth, 1.0, nullptr});
index 867045c..15cb856 100644 (file)
@@ -42,8 +42,7 @@ class NetworkWifiLink : public LinkImpl {
   std::vector<Metric> decay_bandwidths_;
 
 public:
-  NetworkWifiLink(NetworkCm02Model* model, const std::string& name, std::vector<double> bandwidths,
-                  lmm::System* system);
+  NetworkWifiLink(const std::string& name, std::vector<double> bandwidths, lmm::System* system);
 
   void set_host_rate(const s4u::Host* host, int rate_level);
   /** @brief Get the AP rate associated to the host (or -1 if not associated to the AP) */
index 4746890..5799ac2 100644 (file)
@@ -231,7 +231,7 @@ kernel::resource::LinkImpl* NetworkL07Model::create_link(const std::string& name
                                                          s4u::Link::SharingPolicy policy)
 {
   xbt_assert(bandwidths.size() == 1, "Non WIFI link must have only 1 bandwidth.");
-  return new LinkL07(this, name, bandwidths[0], policy);
+  return new LinkL07(name, bandwidths[0], policy, get_maxmin_system());
 }
 
 /************
@@ -247,8 +247,9 @@ CpuL07::CpuL07(CpuL07Model* model, simgrid::s4u::Host* host, const std::vector<d
 
 CpuL07::~CpuL07()=default;
 
-LinkL07::LinkL07(NetworkL07Model* model, const std::string& name, double bandwidth, s4u::Link::SharingPolicy policy)
-    : LinkImpl(model, name, model->get_maxmin_system()->constraint_new(this, bandwidth))
+LinkL07::LinkL07(const std::string& name, double bandwidth, s4u::Link::SharingPolicy policy,
+                 kernel::lmm::System* system)
+    : LinkImpl(name, system->constraint_new(this, bandwidth))
 {
   bandwidth_.peak = bandwidth;
 
@@ -416,5 +417,5 @@ void L07Action::updateBound()
   }
 }
 
-}
-}
+} // namespace surf
+} // namespace simgrid
index de06c8a..2763e4c 100644 (file)
@@ -97,7 +97,7 @@ protected:
 
 class LinkL07 : public kernel::resource::LinkImpl {
 public:
-  LinkL07(NetworkL07Model* model, const std::string& name, double bandwidth, s4u::Link::SharingPolicy policy);
+  LinkL07(const std::string& name, double bandwidth, s4u::Link::SharingPolicy policy, kernel::lmm::System* system);
   LinkL07(const LinkL07&) = delete;
   LinkL07& operator=(const LinkL07&) = delete;
   ~LinkL07() override;