Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
mv NetworkAction::rate_ to Action::user_bound_
[simgrid.git] / src / surf / network_interface.hpp
index f092a17..a109c14 100644 (file)
@@ -45,10 +45,9 @@ public:
    *
    * @param name The name of the Link
    * @param bandwidth The initial bandwidth of the Link in bytes per second
-   * @param latency The initial latency of the Link in seconds
    * @param policy The sharing policy of the Link
    */
-  virtual LinkImpl* create_link(const std::string& name, const std::vector<double>& bandwidths, double latency,
+  virtual LinkImpl* create_link(const std::string& name, const std::vector<double>& bandwidths,
                                 s4u::Link::SharingPolicy policy) = 0;
 
   /**
@@ -107,11 +106,11 @@ public:
  * @brief SURF network link interface class
  * @details A Link represents the link between two [hosts](@ref simgrid::surf::HostImpl)
  */
-class LinkImpl : public Resource, public xbt::PropertyHolder {
+class LinkImpl : public Resource_T<LinkImpl>, public xbt::PropertyHolder {
   s4u::Link piface_;
 
 protected:
-  LinkImpl(NetworkModel* model, const std::string& name, lmm::Constraint* constraint);
+  explicit LinkImpl(const std::string& name);
   LinkImpl(const LinkImpl&) = delete;
   LinkImpl& operator=(const LinkImpl&) = delete;
   ~LinkImpl() override                 = default; // Use destroy() instead of this destructor.
@@ -119,6 +118,8 @@ protected:
 public:
   void destroy(); // Must be called instead of the destructor
 
+  void latency_check(double latency);
+
   /** @brief Public interface */
   const s4u::Link* get_iface() const { return &piface_; }
   s4u::Link* get_iface() { return &piface_; }
@@ -133,7 +134,7 @@ public:
   double get_latency() const;
 
   /** @brief Update the latency in seconds of current Link */
-  virtual void set_latency(double value) = 0;
+  virtual LinkImpl* set_latency(double value) = 0;
 
   /** @brief The sharing policy */
   virtual s4u::Link::SharingPolicy get_sharing_policy() const;
@@ -144,6 +145,8 @@ public:
   void turn_on() override;
   void turn_off() override;
 
+  void seal() override;
+
   void on_bandwidth_change() const;
 
   virtual void
@@ -199,7 +202,7 @@ public:
   double latency_         = 0.; // Delay before the action starts
   double lat_current_     = 0.; // Used to compute the communication RTT, and accordingly limit the communication rate
   double sharing_penalty_ = {};
-  double rate_       = {};
+
   s4u::Host& get_src() const { return src_; }
   s4u::Host& get_dst() const { return dst_; }
 };