- virtual double get_bandwidth_factor(double size);
-
- /**
- * @brief Get definitive bandwidth.
- * @details It gives the minimum bandwidth between the one that would occur if no limitation was enforced, and the
- * one arbitrary limited.
- * @param rate The desired maximum bandwidth.
- * @param bound The bandwidth with only the network taken into account.
- * @param size The size of the message.
- * @return The new bandwidth.
- */
- virtual double get_bandwidth_constraint(double rate, double bound, double size);
- double next_occuring_event_full(double now) override;
-
- LinkImpl* loopback_ = nullptr;
-};
-
-/************
- * Resource *
- ************/
-/** @ingroup SURF_network_interface
- * @brief SURF network link interface class
- * @details A Link represents the link between two [hosts](@ref simgrid::surf::HostImpl)
- */
-class LinkImpl : public Resource, public surf::PropertyHolder {
- bool currently_destroying_ = false;
-
-protected:
- LinkImpl(NetworkModel* model, const std::string& name, lmm::Constraint* constraint);
- LinkImpl(const LinkImpl&) = delete;
- LinkImpl& operator=(const LinkImpl&) = delete;
- ~LinkImpl() override;
-
-public:
- void destroy(); // Must be called instead of the destructor
-
- /** @brief Public interface */
- s4u::Link piface_;
-
- /** @brief Get the bandwidth in bytes per second of current Link */
- virtual double get_bandwidth();
-
- /** @brief Update the bandwidth in bytes per second of current Link */
- virtual void set_bandwidth(double value) = 0;