]> AND Public Git Repository - simgrid.git/blobdiff - src/plugins/link_energy.cpp
Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
MC: inline a function
[simgrid.git] / src / plugins / link_energy.cpp
index e712952b8c6cadb745943424c6d971c2fbf508e7..4f076c06875a6ddb1af5ecb16c5fdb5f69518b04 100644 (file)
@@ -15,7 +15,7 @@
 
 SIMGRID_REGISTER_PLUGIN(link_energy, "Link energy consumption.", &sg_link_energy_plugin_init)
 
 
 SIMGRID_REGISTER_PLUGIN(link_energy, "Link energy consumption.", &sg_link_energy_plugin_init)
 
-/** @defgroup plugin_link_energy
+/** @defgroup plugin_link_energy Plugin Link Energy
 
  This is the link energy plugin, accounting for the dissipated energy in the simulated platform.
 
 
  This is the link energy plugin, accounting for the dissipated energy in the simulated platform.
 
@@ -148,12 +148,11 @@ double LinkEnergy::get_consumed_energy()
 using simgrid::plugin::LinkEnergy;
 
 /* **************************** events  callback *************************** */
 using simgrid::plugin::LinkEnergy;
 
 /* **************************** events  callback *************************** */
-static void on_communicate(const simgrid::kernel::resource::NetworkAction& action, const simgrid::s4u::Host*,
-                           const simgrid::s4u::Host*)
+static void on_communicate(const simgrid::kernel::resource::NetworkAction& action)
 {
   XBT_DEBUG("onCommunicate is called");
 {
   XBT_DEBUG("onCommunicate is called");
-  for (simgrid::kernel::resource::LinkImpl* link : action.links()) {
-    if (link == nullptr)
+  for (simgrid::kernel::resource::LinkImpl* link : action.get_links()) {
+    if (link == nullptr || link->get_sharing_policy() == simgrid::s4u::Link::SharingPolicy::WIFI)
       continue;
 
     XBT_DEBUG("Update link %s", link->get_cname());
       continue;
 
     XBT_DEBUG("Update link %s", link->get_cname());
@@ -169,6 +168,9 @@ static void on_simulation_end()
 
   double total_energy = 0.0; // Total dissipated energy (whole platform)
   for (const auto link : links) {
 
   double total_energy = 0.0; // Total dissipated energy (whole platform)
   for (const auto link : links) {
+    if (link == nullptr || link->get_sharing_policy() == simgrid::s4u::Link::SharingPolicy::WIFI)
+      continue;
+
     double link_energy = link->extension<LinkEnergy>()->get_consumed_energy();
     total_energy += link_energy;
   }
     double link_energy = link->extension<LinkEnergy>()->get_consumed_energy();
     total_energy += link_energy;
   }
@@ -194,24 +196,34 @@ void sg_link_energy_plugin_init()
 
   xbt_assert(sg_host_count() == 0, "Please call sg_link_energy_plugin_init() before initializing the platform.");
 
 
   xbt_assert(sg_host_count() == 0, "Please call sg_link_energy_plugin_init() before initializing the platform.");
 
-  simgrid::s4u::Link::on_creation.connect([](simgrid::s4u::Link& link) { link.extension_set(new LinkEnergy(&link)); });
+  simgrid::s4u::Link::on_creation.connect([](simgrid::s4u::Link& link) {
+    if (link.get_sharing_policy() != simgrid::s4u::Link::SharingPolicy::WIFI) {
+      XBT_DEBUG("Wired Link created: %s", link.get_cname());
+      link.extension_set(new LinkEnergy(&link));
+    } else {
+      XBT_DEBUG("Not Wired link: %s", link.get_cname());
+    }
+  });
 
 
-  simgrid::s4u::Link::on_state_change.connect(
-      [](simgrid::s4u::Link const& link) { link.extension<LinkEnergy>()->update(); });
+  simgrid::s4u::Link::on_state_change.connect([](simgrid::s4u::Link const& link) {
+    if (link.get_sharing_policy() != simgrid::s4u::Link::SharingPolicy::WIFI)
+      link.extension<LinkEnergy>()->update();
+  });
 
   simgrid::s4u::Link::on_destruction.connect([](simgrid::s4u::Link const& link) {
 
   simgrid::s4u::Link::on_destruction.connect([](simgrid::s4u::Link const& link) {
-    if (link.get_name() != "__loopback__")
+    if (link.get_name() != "__loopback__" && link.get_sharing_policy() != simgrid::s4u::Link::SharingPolicy::WIFI)
       XBT_INFO("Energy consumption of link '%s': %f Joules", link.get_cname(),
                link.extension<LinkEnergy>()->get_consumed_energy());
   });
 
       XBT_INFO("Energy consumption of link '%s': %f Joules", link.get_cname(),
                link.extension<LinkEnergy>()->get_consumed_energy());
   });
 
-  simgrid::s4u::Link::on_communication_state_change.connect([](
-      simgrid::kernel::resource::NetworkAction const& action, simgrid::kernel::resource::Action::State /* previous */) {
-    for (simgrid::kernel::resource::LinkImpl* link : action.links()) {
-      if (link != nullptr)
-        link->get_iface()->extension<LinkEnergy>()->update();
-    }
-  });
+  simgrid::s4u::Link::on_communication_state_change.connect(
+      [](simgrid::kernel::resource::NetworkAction const& action,
+         simgrid::kernel::resource::Action::State /* previous */) {
+        for (simgrid::kernel::resource::LinkImpl* link : action.get_links()) {
+          if (link != nullptr && link->get_sharing_policy() != simgrid::s4u::Link::SharingPolicy::WIFI)
+            link->get_iface()->extension<LinkEnergy>()->update();
+        }
+      });
 
   simgrid::s4u::Link::on_communicate.connect(&on_communicate);
   simgrid::s4u::Engine::on_simulation_end.connect(&on_simulation_end);
 
   simgrid::s4u::Link::on_communicate.connect(&on_communicate);
   simgrid::s4u::Engine::on_simulation_end.connect(&on_simulation_end);