X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6a3caa9dd3776eebe0cb5f892aa3ffca879a0846..b63adff37a6c05384b40d5c5bd5be49b246cf9fc:/src/surf/plugins/link_energy.cpp diff --git a/src/surf/plugins/link_energy.cpp b/src/surf/plugins/link_energy.cpp index b81cd6fe9e..0640a8817b 100644 --- a/src/surf/plugins/link_energy.cpp +++ b/src/surf/plugins/link_energy.cpp @@ -1,18 +1,15 @@ -/* Copyright (c) 2017. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2017-2018. 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. */ #include "simgrid/plugins/energy.h" #include "simgrid/s4u/Engine.hpp" -#include "simgrid/simix.hpp" #include "src/surf/network_interface.hpp" +#include "surf/surf.hpp" + #include #include -#include -#include -#include -#include /** @addtogroup SURF_plugin_energy @@ -105,12 +102,12 @@ void LinkEnergy::initWattsRangeList() boost::split(current_power_values, current_power_values_str, boost::is_any_of(":")); xbt_assert(current_power_values.size() == 2, "Power properties incorrectly defined - could not retrieve idle and busy power values for link %s", - this->link_->getCname()); + this->link_->get_cname()); /* min_power corresponds to the idle power (link load = 0) */ /* max_power is the power consumed at 100% link load */ - char* idleMsg = bprintf("Invalid idle power value for link%s", this->link_->getCname()); - char* busyMsg = bprintf("Invalid busy power value for %s", this->link_->getCname()); + char* idleMsg = bprintf("Invalid idle power value for link%s", this->link_->get_cname()); + char* busyMsg = bprintf("Invalid busy power value for %s", this->link_->get_cname()); idle_ = xbt_str_parse_double((current_power_values.at(0)).c_str(), idleMsg); busy_ = xbt_str_parse_double((current_power_values.at(1)).c_str(), busyMsg); @@ -147,15 +144,16 @@ double LinkEnergy::getConsumedEnergy() using simgrid::plugin::LinkEnergy; /* **************************** events callback *************************** */ -static void onCommunicate(simgrid::surf::NetworkAction* action, simgrid::s4u::Host* src, simgrid::s4u::Host* dst) +static void onCommunicate(simgrid::kernel::resource::NetworkAction* action, simgrid::s4u::Host* src, + simgrid::s4u::Host* dst) { XBT_DEBUG("onCommunicate is called"); - for (simgrid::surf::LinkImpl* link : action->links()) { + for (simgrid::kernel::resource::LinkImpl* link : action->links()) { if (link == nullptr) continue; - XBT_DEBUG("Update link %s", link->getCname()); + XBT_DEBUG("Update link %s", link->get_cname()); LinkEnergy* link_energy = link->piface_.extension(); link_energy->initWattsRangeList(); link_energy->update(); @@ -164,8 +162,7 @@ static void onCommunicate(simgrid::surf::NetworkAction* action, simgrid::s4u::Ho static void onSimulationEnd() { - std::vector links; - simgrid::s4u::Engine::getInstance()->getLinkList(&links); + std::vector links = simgrid::s4u::Engine::get_instance()->get_all_links(); double total_energy = 0.0; // Total dissipated energy (whole platform) for (const auto link : links) { @@ -176,7 +173,7 @@ static void onSimulationEnd() XBT_INFO("Total energy over all links: %f", total_energy); } /* **************************** Public interface *************************** */ -SG_BEGIN_DECL() + int sg_link_energy_is_inited() { return LinkEnergy::EXTENSION_ID.valid(); @@ -193,6 +190,8 @@ void sg_link_energy_plugin_init() return; LinkEnergy::EXTENSION_ID = simgrid::s4u::Link::extension_create(); + 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)); }); @@ -202,20 +201,20 @@ void sg_link_energy_plugin_init() }); simgrid::s4u::Link::onDestruction.connect([](simgrid::s4u::Link& link) { - if (strcmp(link.getCname(), "__loopback__")) - XBT_INFO("Energy consumption of link '%s': %f Joules", link.getCname(), + if (strcmp(link.get_cname(), "__loopback__")) + XBT_INFO("Energy consumption of link '%s': %f Joules", link.get_cname(), link.extension()->getConsumedEnergy()); }); - simgrid::s4u::Link::onCommunicationStateChange.connect([](simgrid::surf::NetworkAction* action) { - for (simgrid::surf::LinkImpl* link : action->links()) { + simgrid::s4u::Link::onCommunicationStateChange.connect([](simgrid::kernel::resource::NetworkAction* action) { + for (simgrid::kernel::resource::LinkImpl* link : action->links()) { if (link != nullptr) link->piface_.extension()->update(); } }); simgrid::s4u::Link::onCommunicate.connect(&onCommunicate); - simgrid::s4u::onSimulationEnd.connect(&onSimulationEnd); + simgrid::s4u::on_simulation_end.connect(&onSimulationEnd); } /** @ingroup plugin_energy @@ -229,4 +228,3 @@ double sg_link_get_consumed_energy(sg_link_t link) { return link->extension()->getConsumedEnergy(); } -SG_END_DECL()