Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
added doc for wifi ns3
[simgrid.git] / src / s4u / s4u_Link.cpp
index 44742271e19a7c3181e3e121f3696bd23e43c945..dd77817a48de35655c18c91367188b44c0aed300 100644 (file)
@@ -11,6 +11,7 @@
 #include "simgrid/simix.hpp"
 #include "src/kernel/lmm/maxmin.hpp"
 #include "src/surf/network_interface.hpp"
+#include "src/surf/network_wifi.hpp"
 #include "xbt/log.h"
 
 namespace simgrid {
@@ -23,7 +24,7 @@ xbt::signal<void(Link&)> Link::on_creation;
 xbt::signal<void(Link const&)> Link::on_destruction;
 xbt::signal<void(Link const&)> Link::on_state_change;
 xbt::signal<void(Link const&)> Link::on_bandwidth_change;
-xbt::signal<void(kernel::resource::NetworkAction&, Host* src, Host* dst)> Link::on_communicate;
+xbt::signal<void(kernel::resource::NetworkAction&)> Link::on_communicate;
 xbt::signal<void(kernel::resource::NetworkAction&, kernel::resource::Action::State)>
     Link::on_communication_state_change;
 
@@ -75,6 +76,15 @@ Link::SharingPolicy Link::get_sharing_policy() const
   return this->pimpl_->get_sharing_policy();
 }
 
+void Link::set_host_wifi_rate(const s4u::Host* host, int level) const
+{
+  xbt_assert(pimpl_->get_sharing_policy() == Link::SharingPolicy::WIFI, "Link %s does not seem to be a wifi link.",
+             get_cname());
+  auto* wlink = dynamic_cast<kernel::resource::NetworkWifiLink*>(pimpl_);
+  xbt_assert(wlink != nullptr, "Cannot convert link %s into a wifi link.", get_cname());
+  wlink->set_host_rate(host, level);
+}
+
 double Link::get_usage() const
 {
   return this->pimpl_->get_constraint()->get_usage();
@@ -131,7 +141,7 @@ sg_link_t sg_link_by_name(const char* name)
 
 int sg_link_is_shared(const_sg_link_t link)
 {
-  return (int)link->get_sharing_policy();
+  return link->get_sharing_policy() != simgrid::s4u::Link::SharingPolicy::FATPIPE;
 }
 double sg_link_bandwidth(const_sg_link_t link)
 {