Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of https://framagit.org/simgrid/simgrid
[simgrid.git] / src / plugins / link_energy.cpp
index 37366fe..29b3700 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2021. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2017-2023. The SimGrid Team. All rights reserved.          */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
@@ -9,7 +9,7 @@
 #include "simgrid/s4u/Engine.hpp"
 #include "simgrid/s4u/Link.hpp"
 #include "src/kernel/activity/CommImpl.hpp"
-#include "src/surf/surf_interface.hpp"
+#include "src/simgrid/module.hpp"
 
 #include <boost/algorithm/string/classification.hpp>
 #include <boost/algorithm/string/split.hpp>
@@ -39,10 +39,9 @@ SIMGRID_REGISTER_PLUGIN(link_energy, "Link energy consumption.", &sg_link_energy
  and then use the following function to retrieve the consumption of a given link: sg_link_get_consumed_energy().
  */
 
-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(link_energy, surf, "Logging specific to the SURF LinkEnergy plugin");
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(link_energy, kernel, "Logging specific to the LinkEnergy plugin");
 
-namespace simgrid {
-namespace plugin {
+namespace simgrid::plugin {
 
 class LinkEnergy {
   s4u::Link* link_{};
@@ -111,13 +110,13 @@ void LinkEnergy::init_watts_range_list()
     try {
       idle_ = std::stod(current_power_values.front());
     } catch (const std::invalid_argument&) {
-      throw std::invalid_argument(std::string("Invalid idle power value for link ") + this->link_->get_cname());
+      throw std::invalid_argument("Invalid idle power value for link " + this->link_->get_name());
     }
 
     try {
       busy_ = std::stod(current_power_values.back());
     } catch (const std::invalid_argument&) {
-      throw std::invalid_argument(std::string("Invalid busy power value for link ") + this->link_->get_cname());
+      throw std::invalid_argument("Invalid busy power value for link " + this->link_->get_name());
     }
   }
 }
@@ -138,11 +137,10 @@ double LinkEnergy::get_power() const
 double LinkEnergy::get_consumed_energy()
 {
   if (last_updated_ < simgrid::s4u::Engine::get_clock()) // We need to simcall this as it modifies the environment
-    kernel::actor::simcall(std::bind(&LinkEnergy::update, this));
+    kernel::actor::simcall_answered(std::bind(&LinkEnergy::update, this));
   return this->total_energy_;
 }
-} // namespace plugin
-} // namespace simgrid
+} // namespace simgrid::plugin
 
 using simgrid::plugin::LinkEnergy;
 
@@ -191,7 +189,7 @@ void sg_link_energy_plugin_init()
 
   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) {
+  simgrid::s4u::Link::on_creation_cb([](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));
@@ -200,12 +198,12 @@ void sg_link_energy_plugin_init()
     }
   });
 
-  simgrid::s4u::Link::on_state_change.connect([](simgrid::s4u::Link const& link) {
+  simgrid::s4u::Link::on_state_change_cb([](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_cb([](simgrid::s4u::Link const& link) {
     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());
@@ -214,7 +212,7 @@ void sg_link_energy_plugin_init()
   simgrid::kernel::activity::CommImpl::on_start.connect(&on_communication);
   simgrid::kernel::activity::CommImpl::on_completion.connect(&on_communication);
 
-  simgrid::s4u::Engine::on_simulation_end.connect(&on_simulation_end);
+  simgrid::s4u::Engine::on_simulation_end_cb(&on_simulation_end);
 }
 
 /** @ingroup plugin_link_energy