Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
simplify writing in model setup + may fix issue with unit-tests
[simgrid.git] / src / surf / LinkImpl.cpp
index 3bef2d1730e900467126f8749ed99108f8b72ab5..ecbf1ac3afc7b10ba730edc6791223d36e9dc2ea 100644 (file)
@@ -43,14 +43,24 @@ bool LinkImpl::is_used() const
   return get_model()->get_maxmin_system()->constraint_used(get_constraint());
 }
 
-void LinkImpl::set_sharing_policy(s4u::Link::SharingPolicy policy)
+constexpr kernel::lmm::Constraint::SharingPolicy to_maxmin_policy(s4u::Link::SharingPolicy policy)
 {
-  lmm::Constraint::SharingPolicy ct_policy = lmm::Constraint::SharingPolicy::SHARED;
-  if (policy == s4u::Link::SharingPolicy::FATPIPE)
-    ct_policy = lmm::Constraint::SharingPolicy::FATPIPE;
-  get_constraint()->set_sharing_policy(ct_policy);
+  switch (policy) {
+    case s4u::Link::SharingPolicy::NONLINEAR:
+      return kernel::lmm::Constraint::SharingPolicy::NONLINEAR;
+    case s4u::Link::SharingPolicy::FATPIPE:
+      return kernel::lmm::Constraint::SharingPolicy::FATPIPE;
+    default:
+      return kernel::lmm::Constraint::SharingPolicy::SHARED;
+  }
+}
+
+void LinkImpl::set_sharing_policy(s4u::Link::SharingPolicy policy, const s4u::NonLinearResourceCb& cb)
+{
+  get_constraint()->set_sharing_policy(to_maxmin_policy(policy), cb);
   sharing_policy_ = policy;
 }
+
 s4u::Link::SharingPolicy LinkImpl::get_sharing_policy() const
 {
   return sharing_policy_;