+ /**
+ * @brief Set link's latency
+ *
+ * @param value New latency value (in s)
+ */
+ Link* set_latency(double value);
+ /**
+ * @brief Set latency (string version)
+ *
+ * Accepts values with units, such as '1s' or '7ms'.
+ *
+ * Full list of accepted units: w (week), d (day), h, s, ms, us, ns, ps.
+ *
+ * @throw std::invalid_argument if latency format is incorrect.
+ */
+ Link* set_latency(const std::string& value);
+
+ /** @brief Describes how the link is shared between flows
+ *
+ * Note that the NONLINEAR callback is in the critical path of the solver, so it should be fast.
+ */
+ Link* set_sharing_policy(SharingPolicy policy, const NonLinearResourceCb& cb = {});
+ SharingPolicy get_sharing_policy() const;
+
+ /** Setup the profile with states events (ON or OFF). The profile must contain boolean values. */
+ Link* set_state_profile(kernel::profile::Profile* profile);
+ /** Setup the profile with bandwidth events (peak speed changes due to external load).
+ * The profile must contain percentages (value between 0 and 1). */
+ Link* set_bandwidth_profile(kernel::profile::Profile* profile);
+ /** Setup the profile file with latency events (peak latency changes due to external load).
+ * The profile must contain absolute values */
+ Link* set_latency_profile(kernel::profile::Profile* profile);
+
+ const std::unordered_map<std::string, std::string>* get_properties() const;
+ const char* get_property(const std::string& key) const;
+ Link* set_properties(const std::unordered_map<std::string, std::string>& properties);
+ Link* set_property(const std::string& key, const std::string& value);