Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
further snake_case s4u::Engine
[simgrid.git] / include / simgrid / s4u / Link.hpp
index 81c3929..df89744 100644 (file)
@@ -30,6 +30,8 @@ class XBT_PUBLIC Link : public simgrid::xbt::Extendable<Link> {
   kernel::resource::LinkImpl* const pimpl_;
 
 public:
+  enum class SharingPolicy { SPLITDUPLEX = 2, SHARED = 1, FATPIPE = 0 };
+
   /** @brief Retrieve a link from its name */
   static Link* by_name(const char* name);
 
@@ -50,7 +52,7 @@ public:
 
   /** @brief The sharing policy is a @{link e_surf_link_sharing_policy_t::EType} (0: FATPIPE, 1: SHARED, 2: SPLITDUPLEX)
    */
-  int sharingPolicy();
+  SharingPolicy sharingPolicy();
 
   /** @brief Returns the current load (in flops per second) */
   double getUsage();
@@ -84,6 +86,9 @@ public:
   /** @brief Callback signal fired when the state of a Link changes (when it is turned on or off) */
   static simgrid::xbt::signal<void(s4u::Link&)> onStateChange;
 
+  /** @brief Callback signal fired when the bandwidth of a Link changes */
+  static simgrid::xbt::signal<void(s4u::Link&)> on_bandwidth_change;
+
   /** @brief Callback signal fired when a communication starts */
   static simgrid::xbt::signal<void(kernel::resource::NetworkAction*, s4u::Host* src, s4u::Host* dst)> onCommunicate;