-/* Copyright (c) 2004-2021. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2004-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. */
* Classes *
***********/
-namespace simgrid {
-namespace kernel {
-namespace resource {
+namespace simgrid::kernel::resource {
/************
* Resource *
************/
class StandardLinkImpl : public LinkImpl {
s4u::Link piface_;
s4u::Link::SharingPolicy sharing_policy_ = s4u::Link::SharingPolicy::SHARED;
+ routing::NetZoneImpl* englobing_zone_ = nullptr;
protected:
explicit StandardLinkImpl(const std::string& name);
public:
void destroy(); // Must be called instead of the destructor
+ class Deleter {
+ public:
+ void operator()(StandardLinkImpl* link) const;
+ };
void latency_check(double latency) const;
/** @brief Get the latency in seconds of current Link */
double get_latency() const override { return latency_.peak * latency_.scale; }
+ routing::NetZoneImpl* get_englobing_zone() const { return englobing_zone_; }
+ /** @brief Set the NetZone in which this Link is included */
+ StandardLinkImpl* set_englobing_zone(routing::NetZoneImpl* netzone_p);
+
/** @brief The sharing policy */
void set_sharing_policy(s4u::Link::SharingPolicy policy, const s4u::NonLinearResourceCb& cb) override;
s4u::Link::SharingPolicy get_sharing_policy() const override { return sharing_policy_; }
/* setup the profile file with latency events (peak latency changes due to external load).
* Profile must contain absolute values */
void set_latency_profile(kernel::profile::Profile* profile) override;
-
- void set_concurrency_limit(int limit) const override;
};
-} // namespace resource
-} // namespace kernel
-} // namespace simgrid
+} // namespace simgrid::kernel::resource
#endif /* SIMGRID_KERNEL_RESOURCE_STANDARDLINKIMPL_HPP */