X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b291a429a3c31317cb0b2144cbf626f27f870ad8..78cf63c4e0797bb270e0e809f7cb41d9d598c214:/src/surf/network_interface.hpp diff --git a/src/surf/network_interface.hpp b/src/surf/network_interface.hpp index 256ff5d0fd..ad578421b5 100644 --- a/src/surf/network_interface.hpp +++ b/src/surf/network_interface.hpp @@ -7,6 +7,7 @@ #define SURF_NETWORK_INTERFACE_HPP_ #include "simgrid/kernel/resource/Model.hpp" +#include "simgrid/kernel/resource/NetworkModelIntf.hpp" #include "simgrid/kernel/resource/Resource.hpp" #include "simgrid/s4u/Link.hpp" #include "src/kernel/lmm/maxmin.hpp" @@ -30,7 +31,7 @@ namespace resource { * @brief SURF network model interface class * @details A model is an object which handles the interactions between its Resources and its Actions */ -class NetworkModel : public Model { +class NetworkModel : public Model, public NetworkModelIntf { public: static config::Flag cfg_tcp_gamma; static config::Flag cfg_crosstraffic; @@ -71,7 +72,7 @@ public: * @param size The size of the message. * @return The latency factor. */ - virtual double get_latency_factor(double size); + virtual double get_latency_factor(double /* size */) { return sg_latency_factor; } /** * @brief Get the right multiplicative factor for the bandwidth. @@ -82,20 +83,13 @@ public: * @param size The size of the message. * @return The bandwidth factor. */ - virtual double get_bandwidth_factor(double size); + virtual double get_bandwidth_factor(double /* size*/) { return sg_bandwidth_factor; } - /** - * @brief Get definitive bandwidth. - * @details It gives the minimum bandwidth between the one that would occur if no limitation was enforced, and the - * one arbitrary limited. - * @param rate The desired maximum bandwidth. - * @param bound The bandwidth with only the network taken into account. - * @param size The size of the message. - * @return The new bandwidth. - */ - virtual double get_bandwidth_constraint(double rate, double bound, double size); double next_occurring_event_full(double now) override; + void set_lat_factor_cb(const std::function& cb) override { THROW_UNIMPLEMENTED; } + void set_bw_factor_cb(const std::function& cb) override { THROW_UNIMPLEMENTED; } + LinkImpl* loopback_ = nullptr; }; @@ -125,14 +119,12 @@ public: s4u::Link* get_iface() { return &piface_; } /** @brief Get the bandwidth in bytes per second of current Link */ - double get_bandwidth() const; - + double get_bandwidth() const { return bandwidth_.peak * bandwidth_.scale; } /** @brief Update the bandwidth in bytes per second of current Link */ virtual void set_bandwidth(double value) = 0; /** @brief Get the latency in seconds of current Link */ - double get_latency() const; - + double get_latency() const { return latency_.peak * latency_.scale; } /** @brief Update the latency in seconds of current Link */ virtual LinkImpl* set_latency(double value) = 0; @@ -157,8 +149,8 @@ public: * Profile must contain absolute values */ virtual LinkImpl* set_latency_profile(kernel::profile::Profile* profile); - Metric latency_ = {0.0, 0, nullptr}; - Metric bandwidth_ = {1.0, 0, nullptr}; + Metric latency_ = {0.0, 1, nullptr}; + Metric bandwidth_ = {1.0, 1, nullptr}; }; /********** @@ -205,10 +197,16 @@ public: s4u::Host& get_src() const { return src_; } s4u::Host& get_dst() const { return dst_; } }; + +/* Insert link(s) at the end of vector `result' (at the beginning, and reversed, for insert_link_latency()), and add + * link->get_latency() to *latency when latency is not null + */ +void add_link_latency(std::vector& result, LinkImpl* link, double* latency); +void add_link_latency(std::vector& result, const std::vector& links, double* latency); +void insert_link_latency(std::vector& result, const std::vector& links, double* latency); + } // namespace resource } // namespace kernel } // namespace simgrid #endif /* SURF_NETWORK_INTERFACE_HPP_ */ - -