X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a39a90a68780cd9dd43fadcacf9bce1d3c3df26d..8206f2d5427004aa113da1f9985d9263183bb978:/include/simgrid/s4u/Link.hpp
diff --git a/include/simgrid/s4u/Link.hpp b/include/simgrid/s4u/Link.hpp
index 134a1f87a6..b00085377c 100644
--- a/include/simgrid/s4u/Link.hpp
+++ b/include/simgrid/s4u/Link.hpp
@@ -30,7 +30,9 @@ namespace s4u {
* @endrst
*/
class XBT_PUBLIC Link : public xbt::Extendable {
+#ifndef DOXYGEN
friend kernel::resource::LinkImpl;
+#endif
// Links are created from the NetZone, and destroyed by their private implementation when the simulation ends
explicit Link(kernel::resource::LinkImpl* pimpl) : pimpl_(pimpl) {}
@@ -52,19 +54,53 @@ public:
/** @brief Retrieves the name of that link as a C string */
const char* get_cname() const;
- /** Get the bandwidth of the current Link (in bytes per second) */
+ /** Get/Set the bandwidth of the current Link (in bytes per second) */
double get_bandwidth() const;
- /** Set the bandwidth of the current Link (in bytes per second) */
- void set_bandwidth(double value);
+ Link* set_bandwidth(double value);
- /** Get the latency of the current Link (in seconds) */
+ /** Get/Set the latency of the current Link (in seconds) */
double get_latency() const;
- /** Set the latency of the current Link (in seconds) */
- void set_latency(double value);
+ /**
+ * @brief Set link's latency
+ *
+ * @param value New latency value (in s)
+ */
+ Link* set_latency(double value);
+ /**
+ * @brief Set latency (string version)
+ *
+ * @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 */
+ Link* set_sharing_policy(SharingPolicy policy);
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* get_properties() const;
+ const char* get_property(const std::string& key) const;
+ Link* set_properties(const std::unordered_map& properties);
+ Link* set_property(const std::string& key, const std::string& value);
+
+ /**
+ * @brief Set the number of communications that can shared this link at the same time
+ *
+ * Use this method to serialize communication flows going through this link.
+ * Use -1 to set no limit.
+ *
+ * @param limit Number of concurrent flows
+ */
+ Link* set_concurrency_limit(int limit);
+
/** @brief Set the level of communication speed of the given host on this wifi link.
*
* The bandwidth of a wifi link for a given host depends on its SNR (signal to noise ratio),
@@ -88,22 +124,10 @@ public:
bool is_shared() const;
void turn_on();
- bool is_on() const;
void turn_off();
- void seal();
- /** Setup the profile with states events (ON or OFF). The profile must contain boolean values. */
- void 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). */
- void 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 */
- void set_latency_profile(kernel::profile::Profile* profile);
+ bool is_on() const;
- const char* get_property(const std::string& key) const;
- Link* set_property(const std::string& key, const std::string& value);
- const std::unordered_map* get_properties() const;
- Link* set_properties(const std::unordered_map& properties);
+ Link* seal();
/* The signals */
/** @brief Callback signal fired when a new Link is created */