X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e41e55bfa745d2164c175978fffdb21a94b59b53..78cf63c4e0797bb270e0e809f7cb41d9d598c214:/src/surf/network_interface.cpp diff --git a/src/surf/network_interface.cpp b/src/surf/network_interface.cpp index 98e6ad9a9a..ef977d4819 100644 --- a/src/surf/network_interface.cpp +++ b/src/surf/network_interface.cpp @@ -10,6 +10,8 @@ #include "src/surf/surf_interface.hpp" #include "surf/surf.hpp" +#include + #ifndef NETWORK_INTERFACE_CPP_ #define NETWORK_INTERFACE_CPP_ @@ -61,9 +63,6 @@ LinkImpl::LinkImpl(const std::string& name) : Resource_T(name), piface_(this) if (name != "__loopback__") xbt_assert(not s4u::Link::by_name_or_null(name), "Link '%s' declared several times in the platform.", name.c_str()); - latency_.scale = 1; - bandwidth_.scale = 1; - s4u::Engine::get_instance()->link_register(name, &piface_); XBT_DEBUG("Create link '%s'", name.c_str()); } @@ -190,6 +189,33 @@ std::list NetworkAction::get_links() const return retlist; } + +static void add_latency(const std::vector& links, double* latency) +{ + if (latency) + *latency = std::accumulate(begin(links), end(links), *latency, + [](double lat, const auto* link) { return lat + link->get_latency(); }); +} + +void add_link_latency(std::vector& result, LinkImpl* link, double* latency) +{ + result.push_back(link); + if (latency) + *latency += link->get_latency(); +} + +void add_link_latency(std::vector& result, const std::vector& links, double* latency) +{ + result.insert(result.end(), begin(links), end(links)); + add_latency(links, latency); +} + +void insert_link_latency(std::vector& result, const std::vector& links, double* latency) +{ + result.insert(result.begin(), rbegin(links), rend(links)); + add_latency(links, latency); +} + } // namespace resource } // namespace kernel } // namespace simgrid