Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
check that disk has been given as argument before accessing its pimpl
[simgrid.git] / src / kernel / resource / StandardLinkImpl.hpp
index 0077755b02fd1dedf5730f325625b34d12fd734c..d79e687526279d3d996966554a1c704bb9f08263 100644 (file)
  * 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);
@@ -33,6 +32,10 @@ protected:
 
 public:
   void destroy(); // Must be called instead of the destructor
+  class Deleter {
+  public:
+    void operator()(StandardLinkImpl* link) const;
+  };
 
   void latency_check(double latency) const;
 
@@ -46,6 +49,10 @@ public:
   /** @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_; }
@@ -67,8 +74,6 @@ public:
   void set_concurrency_limit(int limit) const override;
 };
 
-} // namespace resource
-} // namespace kernel
-} // namespace simgrid
+} // namespace simgrid::kernel::resource
 
 #endif /* SIMGRID_KERNEL_RESOURCE_STANDARDLINKIMPL_HPP */