Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Also simplify the API of Engine::getLinkList
[simgrid.git] / src / surf / plugins / link_energy.cpp
index 499fe6c..cee5ad2 100644 (file)
@@ -164,8 +164,7 @@ static void onCommunicate(simgrid::surf::NetworkAction* action, simgrid::s4u::Ho
 
 static void onSimulationEnd()
 {
-  std::vector<simgrid::s4u::Link*> links;
-  simgrid::s4u::Engine::getInstance()->getLinkList(&links);
+  std::vector<simgrid::s4u::Link*> links = simgrid::s4u::Engine::getInstance()->getLinkList();
 
   double total_energy = 0.0; // Total dissipated energy (whole platform)
   for (const auto link : links) {
@@ -177,6 +176,10 @@ static void onSimulationEnd()
 }
 /* **************************** Public interface *************************** */
 SG_BEGIN_DECL()
+int sg_link_energy_is_inited()
+{
+  return LinkEnergy::EXTENSION_ID.valid();
+}
 /** \ingroup SURF_plugin_energy
  * \brief Enable energy plugin
  * \details Enable energy plugin to get joules consumption of each cpu. You should call this function before
@@ -189,6 +192,8 @@ void sg_link_energy_plugin_init()
     return;
   LinkEnergy::EXTENSION_ID = simgrid::s4u::Link::extension_create<LinkEnergy>();
 
+  xbt_assert(sg_host_count() == 0, "Please call sg_link_energy_plugin_init() before initializing the platform.");
+
   simgrid::s4u::Link::onCreation.connect([](simgrid::s4u::Link& link) {
     link.extension_set(new LinkEnergy(&link));
   });