-/************
- * Resource *
- ************/
-
-LinkImpl::LinkImpl(NetworkModel* model, const std::string& name, lmm::Constraint* constraint)
- : Resource(model, name, constraint), 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());
-
- latency_.scale = 1;
- bandwidth_.scale = 1;
-
- s4u::Engine::get_instance()->link_register(name, &piface_);
- XBT_DEBUG("Create link '%s'", name.c_str());
-}
-
-/** @brief use destroy() instead of this destructor */
-LinkImpl::~LinkImpl()
-{
- xbt_assert(currently_destroying_, "Don't delete Links directly. Call destroy() instead.");
-}
-/** @brief Fire the required callbacks and destroy the object
- *
- * Don't delete directly a Link, call l->destroy() instead.
- */
-void LinkImpl::destroy()
-{
- if (not currently_destroying_) {
- currently_destroying_ = true;
- s4u::Link::on_destruction(this->piface_);
- delete this;
- }
-}
-
-bool LinkImpl::is_used()
-{
- return get_model()->get_maxmin_system()->constraint_used(get_constraint());
-}
-
-double LinkImpl::get_latency()
-{
- return latency_.peak * latency_.scale;
-}
-
-double LinkImpl::get_bandwidth()
-{
- return bandwidth_.peak * bandwidth_.scale;
-}
-
-s4u::Link::SharingPolicy LinkImpl::get_sharing_policy()
-{
- return get_constraint()->get_sharing_policy();
-}
-
-void LinkImpl::turn_on()
-{
- if (not is_on()) {
- Resource::turn_on();
- s4u::Link::on_state_change(this->piface_);
- }
-}
-
-void LinkImpl::turn_off()
-{
- if (is_on()) {
- Resource::turn_off();
- s4u::Link::on_state_change(this->piface_);
- }
-}
-
-void LinkImpl::on_bandwidth_change()
-{
- s4u::Link::on_bandwidth_change(this->piface_);
-}
-
-void LinkImpl::set_bandwidth_profile(profile::Profile* profile)
-{
- xbt_assert(bandwidth_.event == nullptr, "Cannot set a second bandwidth profile to Link %s", get_cname());
- bandwidth_.event = profile->schedule(&future_evt_set, this);
-}
-
-void LinkImpl::set_latency_profile(profile::Profile* profile)
-{
- xbt_assert(latency_.event == nullptr, "Cannot set a second latency profile to Link %s", get_cname());
- latency_.event = profile->schedule(&future_evt_set, this);
-}
-