Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
add two more utility functions to the Operation plugin
authorFred Suter <suterf@ornl.gov>
Thu, 11 May 2023 14:29:20 +0000 (10:29 -0400)
committerFred Suter <suterf@ornl.gov>
Thu, 11 May 2023 14:29:36 +0000 (10:29 -0400)
include/simgrid/plugins/operation.hpp
src/plugins/operation.cpp

index 6725466..7dbbb33 100644 (file)
@@ -67,6 +67,8 @@ public:
   double get_amount() const { return amount_; }
   void add_successor(OperationPtr op);
   void remove_successor(OperationPtr op);
+  void remove_all_successors();
+  const std::set<Operation*>& get_successors() const { return successors_ ;}
   void on_this_start(const std::function<void(Operation*)>& func);
   void on_this_end(const std::function<void(Operation*)>& func);
   int get_count() const;
index ce34fe6..32ed866 100644 (file)
@@ -170,6 +170,17 @@ void Operation::remove_successor(OperationPtr successor)
   successor->remove_predecessor(this);
 }
 
+void Operation::remove_all_successors()
+{
+  simgrid::kernel::actor::simcall_answered([this] {
+    while (not successors_.empty()) {
+      auto* successor = *(successors_.begin());
+      successor->predecessors_.erase(this);
+      successors_.erase(successor);
+    }
+  });
+}
+
 /** @ingroup plugin_operation
  *  @param func The function to set.
  *  @brief Set a function to be called before each execution.