#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 {
+
+template class xbt::Extendable<s4u::Link>;
+
namespace s4u {
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;
return this->pimpl_->get_latency();
}
+void Link::set_latency(double value)
+{
+ kernel::actor::simcall([this, value] { pimpl_->set_latency(value); });
+}
+
double Link::get_bandwidth() const
{
return this->pimpl_->get_bandwidth();
}
+void Link::set_bandwidth(double value)
+{
+ kernel::actor::simcall([this, value] { pimpl_->set_bandwidth(value); });
+}
+
Link::SharingPolicy Link::get_sharing_policy() const
{
return this->pimpl_->get_sharing_policy();
}
+void Link::set_host_wifi_rate(s4u::Host* host, int level)
+{
+ 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();
{
return link->get_bandwidth();
}
+
+void sg_link_bandwidth_set(sg_link_t link, double value)
+{
+ return link->set_bandwidth(value);
+}
+
double sg_link_latency(const_sg_link_t link)
{
return link->get_latency();
}
+void sg_link_latency_set(sg_link_t link, double value)
+{
+ return link->set_latency(value);
+}
void* sg_link_data(const_sg_link_t link)
{
return link->get_data();