Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Define simgrid::xbt::InitializationError (please Sonar).
[simgrid.git] / src / plugins / link_energy.cpp
index 01b0bab..3a81581 100644 (file)
@@ -3,6 +3,7 @@
 /* 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. */
 
+#include "simgrid/Exception.hpp"
 #include "simgrid/plugins/energy.h"
 #include "simgrid/s4u/Engine.hpp"
 #include "src/surf/network_interface.hpp"
@@ -159,7 +160,7 @@ static void on_communicate(simgrid::kernel::resource::NetworkAction const& actio
       continue;
 
     XBT_DEBUG("Update link %s", link->get_cname());
-    LinkEnergy* link_energy = link->piface_.extension<LinkEnergy>();
+    LinkEnergy* link_energy = link->get_iface()->extension<LinkEnergy>();
     link_energy->init_watts_range_list();
     link_energy->update();
   }
@@ -211,7 +212,7 @@ void sg_link_energy_plugin_init()
       simgrid::kernel::resource::NetworkAction const& action, simgrid::kernel::resource::Action::State /* previous */) {
     for (simgrid::kernel::resource::LinkImpl* link : action.links()) {
       if (link != nullptr)
-        link->piface_.extension<LinkEnergy>()->update();
+        link->get_iface()->extension<LinkEnergy>()->update();
     }
   });
 
@@ -228,5 +229,8 @@ void sg_link_energy_plugin_init()
  */
 double sg_link_get_consumed_energy(sg_link_t link)
 {
+  if (not LinkEnergy::EXTENSION_ID.valid())
+    throw simgrid::xbt::InitializationError("The Energy plugin is not active. Please call sg_link_energy_plugin_init() "
+                                            "before calling sg_link_get_consumed_energy().");
   return link->extension<LinkEnergy>()->get_consumed_energy();
 }