X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1ebb8e111d904fea559e48ec193c1f7c5dee2245..4e62e76d104a17f0c9aaf9135ac605e9c8c87141:/src/surf/network_cm02.hpp diff --git a/src/surf/network_cm02.hpp b/src/surf/network_cm02.hpp index 8cfa9ff60c..01bce47a88 100644 --- a/src/surf/network_cm02.hpp +++ b/src/surf/network_cm02.hpp @@ -10,7 +10,7 @@ #include "network_interface.hpp" #include "xbt/graph.h" - +#include "xbt/string.hpp" /*********** * Classes * @@ -32,7 +32,7 @@ class NetworkCm02Model : public NetworkModel { public: explicit NetworkCm02Model(lmm::System* (*make_new_sys)(bool) = &lmm::make_new_maxmin_system); virtual ~NetworkCm02Model() = default; - LinkImpl* create_link(const std::string& name, double bandwidth, double latency, + LinkImpl* create_link(const std::string& name, const std::vector& bandwidths, double latency, s4u::Link::SharingPolicy policy) override; void update_actions_state_lazy(double now, double delta) override; void update_actions_state_full(double now, double delta) override; @@ -47,14 +47,29 @@ class NetworkCm02Link : public LinkImpl { public: NetworkCm02Link(NetworkCm02Model* model, const std::string& name, double bandwidth, double latency, s4u::Link::SharingPolicy policy, lmm::System* system); - NetworkCm02Link(NetworkCm02Model* model, const std::string& name, std::vector bandwidths, - s4u::Link::SharingPolicy policy, lmm::System* system); - virtual ~NetworkCm02Link() = default; + ~NetworkCm02Link() override = default; void apply_event(kernel::profile::Event* event, double value) override; void set_bandwidth(double value) override; void set_latency(double value) override; }; +class NetworkWifiLink : public NetworkCm02Link { + /** @brief Hold every rates association between host and links (host name, rates id) */ + std::map host_rates_; + + /** @brief A link can have several bandwidth attach to it (mostly use by wifi model) */ + std::vector bandwidths_; + +public: + NetworkWifiLink(NetworkCm02Model* model, const std::string& name, std::vector bandwidths, + s4u::Link::SharingPolicy policy, lmm::System* system); + + void set_host_rate(s4u::Host* host, int rate_level); + /** @brief Get the AP rate associated to the host (or -1 if not associated to the AP) */ + double get_host_rate(s4u::Host* host); + s4u::Link::SharingPolicy get_sharing_policy() override; +}; + /********** * Action * **********/