Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix leak on test.
[simgrid.git] / src / plugins / link_load.cpp
index 1b72c1d..77f4382 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2020. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2017-2021. 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. */
@@ -12,7 +12,7 @@
 
 #include <limits>
 
-SIMGRID_REGISTER_PLUGIN(link_energy, "Link cumulated load.", &sg_link_load_plugin_init)
+SIMGRID_REGISTER_PLUGIN(link_load, "Link cumulated load.", &sg_link_load_plugin_init)
 
 /** @defgroup plugin_link_load Plugin Link Cumulated Load
 
@@ -39,11 +39,19 @@ namespace simgrid {
 namespace plugin {
 
 class LinkLoad {
+  s4u::Link* link_{};      /*< The link onto which this data is attached*/
+  bool is_tracked_{false}; /*<Whether the link is tracked or not*/
+
+  double cumulated_bytes_{};      /*< Cumulated load since last reset*/
+  double min_bytes_per_second_{}; /*< Minimum instantaneous load observed since last reset*/
+  double max_bytes_per_second_{}; /*< Maximum instantaneous load observed since last reset*/
+  double last_reset_{};           /*< Timestamp of the last reset (init timestamp by default)*/
+  double last_updated_{};         /*< Timestamp of the last energy update event*/
+
 public:
-  static simgrid::xbt::Extension<simgrid::s4u::Link, LinkLoad> EXTENSION_ID;
+  static xbt::Extension<s4u::Link, LinkLoad> EXTENSION_ID;
 
-  explicit LinkLoad(simgrid::s4u::Link* ptr);
-  ~LinkLoad() = default;
+  explicit LinkLoad(s4u::Link* ptr);
 
   void track();
   void untrack();
@@ -52,25 +60,15 @@ public:
   double get_average_bytes();
 
   /// Getter methods.
-  bool is_tracked() const;
+  bool is_tracked() const { return is_tracked_; }
   double get_cumulated_bytes();
   double get_min_bytes_per_second();
   double get_max_bytes_per_second();
-
-private:
-  s4u::Link* link_{};      /*< The link onto which this data is attached*/
-  bool is_tracked_{false}; /*<Whether the link is tracked or not*/
-
-  double cumulated_bytes_{};      /*< Cumulated load since last reset*/
-  double min_bytes_per_second_{}; /*< Minimum instantaneous load observed since last reset*/
-  double max_bytes_per_second_{}; /*< Maximum instantaneous load observed since last reset*/
-  double last_reset_{};           /*< Timestamp of the last reset (init timestamp by default)*/
-  double last_updated_{};         /*< Timestamp of the last energy update event*/
 };
 
 xbt::Extension<s4u::Link, LinkLoad> LinkLoad::EXTENSION_ID;
 
-LinkLoad::LinkLoad(simgrid::s4u::Link* ptr) : link_(ptr), is_tracked_(false)
+LinkLoad::LinkLoad(s4u::Link* ptr) : link_(ptr), is_tracked_(false)
 {
   XBT_DEBUG("Instantiating a LinkLoad for link '%s'", link_->get_cname());
 }
@@ -103,7 +101,7 @@ void LinkLoad::reset()
   XBT_DEBUG("min_bytes_per_second_ = %g", min_bytes_per_second_);
   XBT_DEBUG("max_bytes_per_second_ = %g", max_bytes_per_second_);
   last_reset_   = surf_get_clock();
-  last_updated_ = last_updated_;
+  last_updated_ = last_reset_;
 }
 
 void LinkLoad::update()
@@ -132,10 +130,6 @@ void LinkLoad::update()
   last_updated_ = now;
 }
 
-bool LinkLoad::is_tracked() const
-{
-  return is_tracked_;
-}
 double LinkLoad::get_cumulated_bytes()
 {
   update();
@@ -172,7 +166,7 @@ using simgrid::plugin::LinkLoad;
 static void on_communicate(const simgrid::kernel::resource::NetworkAction& action)
 {
   XBT_DEBUG("on_communicate is called");
-  for (simgrid::kernel::resource::LinkImpl* link : action.get_links()) {
+  for (auto* link : action.get_links()) {
     if (link == nullptr || link->get_sharing_policy() == simgrid::s4u::Link::SharingPolicy::WIFI)
       continue;
 
@@ -218,7 +212,7 @@ void sg_link_load_plugin_init()
   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()) {
+        for (auto const* link : action.get_links()) {
           if (link != nullptr && link->get_sharing_policy() != simgrid::s4u::Link::SharingPolicy::WIFI) {
             auto link_load = link->get_iface()->extension<LinkLoad>();
             if (link_load->is_tracked())