X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/3577c5ad9b3db70921211e8ec8fe16dfb076b6cf..78cf63c4e0797bb270e0e809f7cb41d9d598c214:/src/surf/network_interface.cpp?ds=sidebyside diff --git a/src/surf/network_interface.cpp b/src/surf/network_interface.cpp index 2cb1cdfb4d..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_ @@ -187,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