.. doxygenfunction:: simgrid::s4u::Link::get_latency() const
.. doxygenfunction:: simgrid::s4u::Link::get_name() const
.. doxygenfunction:: simgrid::s4u::Link::get_sharing_policy() const
+ .. doxygenfunction:: simgrid::s4u::Link::get_concurrency_limit() const
.. doxygenfunction:: simgrid::s4u::Link::get_usage() const
.. doxygenfunction:: simgrid::s4u::Link::is_used() const
* @param limit Number of concurrent flows
*/
Link* set_concurrency_limit(int limit);
+ int get_concurrency_limit() const;
/** @brief Set the level of communication speed of the given host on this wifi link.
*
virtual void set_latency_profile(kernel::profile::Profile* profile) = 0;
/** @brief Set the concurrency limit for this link */
virtual void set_concurrency_limit(int limit) const = 0;
+ /** @brief Get the concurrency limit of this link */
+ virtual int get_concurrency_limit() const = 0;
};
} // namespace simgrid::kernel::resource
link_down_->set_latency_profile(profile);
}
+int SplitDuplexLinkImpl::get_concurrency_limit() const
+{
+ return link_up_->get_concurrency_limit();
+}
+
void SplitDuplexLinkImpl::set_concurrency_limit(int limit) const
{
link_up_->set_concurrency_limit(limit);
* Profile must contain absolute values */
void set_latency_profile(kernel::profile::Profile* profile) override;
void set_concurrency_limit(int limit) const override;
+ int get_concurrency_limit() const override;
};
} // namespace simgrid::kernel::resource
}
get_constraint()->set_concurrency_limit(limit);
}
+int StandardLinkImpl::get_concurrency_limit() const
+{
+ return get_constraint()->get_concurrency_limit();
+}
} // namespace simgrid::kernel::resource
void set_latency_profile(kernel::profile::Profile* profile) override;
void set_concurrency_limit(int limit) const override;
+ int get_concurrency_limit() const override;
};
} // namespace simgrid::kernel::resource
wlink->set_host_rate(host, level);
}
+int Link::get_concurrency_limit() const
+{
+ return pimpl_->get_concurrency_limit();
+}
+
Link* Link::set_concurrency_limit(int limit)
{
kernel::actor::simcall_object_access(pimpl_, [this, limit] { pimpl_->set_concurrency_limit(limit); });
[](const sg4::Link* a, const sg4::Link* b) { return a->get_name() < b->get_name(); });
for (auto const* link : links) {
- ss << " <link id=\"" << link->get_name() << "\" ";
- ss << "bandwidth=\"" << link->get_bandwidth() << "\" ";
- ss << "latency=\"" << link->get_latency() << "\"";
+ ss << " <link id=\"" << link->get_name() << "\"";
+ ss << " bandwidth=\"" << link->get_bandwidth() << "\"";
+ ss << " latency=\"" << link->get_latency() << "\"";
+ if (link->get_concurrency_limit() != -1)
+ ss << " concurrency=\"" << link->get_concurrency_limit() << "\"";
if (link->is_shared()) {
ss << "/>\n";
} else {