From 018f350d5ea999b34ce1a4294cf53993ba2003a7 Mon Sep 17 00:00:00 2001 From: Frederic Suter Date: Tue, 21 Apr 2020 13:40:42 +0200 Subject: [PATCH] add the capacicity to modify links' latency and bandwidth --- include/simgrid/link.h | 2 ++ include/simgrid/s4u/Link.hpp | 2 ++ src/s4u/s4u_Link.cpp | 20 ++++++++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/include/simgrid/link.h b/include/simgrid/link.h index 4c4cf86994..115e64aea5 100644 --- a/include/simgrid/link.h +++ b/include/simgrid/link.h @@ -17,7 +17,9 @@ XBT_PUBLIC const char* sg_link_name(const_sg_link_t link); XBT_PUBLIC sg_link_t sg_link_by_name(const char* name); XBT_PUBLIC int sg_link_is_shared(const_sg_link_t link); XBT_PUBLIC double sg_link_bandwidth(const_sg_link_t link); +XBT_PUBLIC void sg_link_bandwidth_set(sg_link_t link, double value); XBT_PUBLIC double sg_link_latency(const_sg_link_t link); +XBT_PUBLIC void sg_link_latency_set(sg_link_t link, double value); XBT_PUBLIC void* sg_link_data(const_sg_link_t link); XBT_PUBLIC void sg_link_data_set(sg_link_t link, void* data); XBT_PUBLIC int sg_link_count(); diff --git a/include/simgrid/s4u/Link.hpp b/include/simgrid/s4u/Link.hpp index 4fa04e8b26..d5d13bba1d 100644 --- a/include/simgrid/s4u/Link.hpp +++ b/include/simgrid/s4u/Link.hpp @@ -54,9 +54,11 @@ public: /** @brief Get the bandwidth in bytes per second of current Link */ double get_bandwidth() const; + void set_bandwidth(double value); /** @brief Get the latency in seconds of current Link */ double get_latency() const; + void set_latency(double value); /** @brief Describes how the link is shared between flows */ SharingPolicy get_sharing_policy() const; diff --git a/src/s4u/s4u_Link.cpp b/src/s4u/s4u_Link.cpp index 4942e65ee6..44742271e1 100644 --- a/src/s4u/s4u_Link.cpp +++ b/src/s4u/s4u_Link.cpp @@ -55,11 +55,21 @@ double Link::get_latency() const 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(); @@ -127,10 +137,20 @@ double sg_link_bandwidth(const_sg_link_t link) { 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(); -- 2.20.1