X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ea74f5d95928a521a588737e81f1de94eef25d19..dd49f9d0ff63334f76e12446cd8076edef85c508:/src/kernel/resource/StandardLinkImpl.cpp diff --git a/src/kernel/resource/StandardLinkImpl.cpp b/src/kernel/resource/StandardLinkImpl.cpp index 4cc2b76d5c..a7661a1ab7 100644 --- a/src/kernel/resource/StandardLinkImpl.cpp +++ b/src/kernel/resource/StandardLinkImpl.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2013-2022. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2013-2023. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -15,19 +15,21 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(res_network); * Model * *********/ -namespace simgrid { -namespace kernel { -namespace resource { +namespace simgrid::kernel::resource { StandardLinkImpl::StandardLinkImpl(const std::string& name) : LinkImpl(name), piface_(this) { if (name != "__loopback__") xbt_assert(not s4u::Link::by_name_or_null(name), "Link '%s' declared several times in the platform.", name.c_str()); - s4u::Engine::get_instance()->link_register(name, &piface_); XBT_DEBUG("Create link '%s'", name.c_str()); } +void StandardLinkImpl::Deleter::operator()(resource::StandardLinkImpl* link) const +{ + link->destroy(); +} + /** @brief Fire the required callbacks and destroy the object * * Don't delete directly a Link, call l->destroy() instead. @@ -35,13 +37,15 @@ StandardLinkImpl::StandardLinkImpl(const std::string& name) : LinkImpl(name), pi void StandardLinkImpl::destroy() { s4u::Link::on_destruction(piface_); - s4u::Engine::get_instance()->link_unregister(get_name()); + piface_.on_this_destruction(piface_); delete this; } constexpr kernel::lmm::Constraint::SharingPolicy to_maxmin_policy(s4u::Link::SharingPolicy policy) { switch (policy) { + case s4u::Link::SharingPolicy::WIFI: + return kernel::lmm::Constraint::SharingPolicy::WIFI; case s4u::Link::SharingPolicy::NONLINEAR: return kernel::lmm::Constraint::SharingPolicy::NONLINEAR; case s4u::Link::SharingPolicy::FATPIPE: @@ -59,20 +63,27 @@ void StandardLinkImpl::set_sharing_policy(s4u::Link::SharingPolicy policy, const void StandardLinkImpl::latency_check(double latency) const { - static double last_warned_latency = sg_surf_precision; + static double last_warned_latency = sg_precision_timing; if (latency != 0.0 && latency < last_warned_latency) { - XBT_WARN("Latency for link %s is smaller than surf/precision (%g < %g)." - " For more accuracy, consider setting \"--cfg=surf/precision:%g\".", - get_cname(), latency, sg_surf_precision, latency); + XBT_WARN("Latency for link %s is smaller than precision/timing (%g < %g)." + " For more accuracy, consider setting \"--cfg=precision/timing:%g\".", + get_cname(), latency, sg_precision_timing, latency); last_warned_latency = latency; } } +StandardLinkImpl* StandardLinkImpl::set_englobing_zone(routing::NetZoneImpl* englobing_zone) +{ + englobing_zone_ = englobing_zone; + return this; +} + void StandardLinkImpl::turn_on() { if (not is_on()) { Resource::turn_on(); - s4u::Link::on_state_change(piface_); + s4u::Link::on_onoff(piface_); + piface_.on_this_onoff(piface_); } } @@ -80,7 +91,8 @@ void StandardLinkImpl::turn_off() { if (is_on()) { Resource::turn_off(); - s4u::Link::on_state_change(piface_); + s4u::Link::on_onoff(piface_); + piface_.on_this_onoff(piface_); const kernel::lmm::Element* elem = nullptr; double now = EngineImpl::get_clock(); @@ -106,6 +118,7 @@ void StandardLinkImpl::seal() void StandardLinkImpl::on_bandwidth_change() const { s4u::Link::on_bandwidth_change(piface_); + piface_.on_this_bandwidth_change(piface_); } void StandardLinkImpl::set_bandwidth_profile(profile::Profile* profile) @@ -124,14 +137,4 @@ void StandardLinkImpl::set_latency_profile(profile::Profile* profile) } } -void StandardLinkImpl::set_concurrency_limit(int limit) const -{ - if (limit != -1) { - get_constraint()->reset_concurrency_maximum(); - } - get_constraint()->set_concurrency_limit(limit); -} - -} // namespace resource -} // namespace kernel -} // namespace simgrid +} // namespace simgrid::kernel::resource