Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
reduce redudancy
authorMartin Quinson <martin.quinson@loria.fr>
Wed, 21 Jun 2017 09:23:39 +0000 (11:23 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Wed, 21 Jun 2017 09:23:39 +0000 (11:23 +0200)
include/simgrid/s4u/Comm.hpp

index 697f259..4adecc0 100644 (file)
@@ -30,29 +30,7 @@ public:
    * iterator on the finished Comms. */
   template <class I> static I wait_any(I first, I last)
   {
    * iterator on the finished Comms. */
   template <class I> static I wait_any(I first, I last)
   {
-    // Map to dynar<Synchro*>:
-    xbt_dynar_t comms = xbt_dynar_new(sizeof(simgrid::kernel::activity::ActivityImpl*), [](void*ptr){
-      intrusive_ptr_release(*(simgrid::kernel::activity::ActivityImpl**)ptr);
-    });
-    for (I iter = first; iter != last; iter++) {
-      CommPtr comm = *iter;
-      if (comm->state_ == inited)
-        comm->start();
-      xbt_assert(comm->state_ == started);
-      simgrid::kernel::activity::ActivityImpl* ptr = comm->pimpl_.get();
-      intrusive_ptr_add_ref(ptr);
-      xbt_dynar_push_as(comms, simgrid::kernel::activity::ActivityImpl*, ptr);
-    }
-    // Call the underlying simcall:
-    int idx = simcall_comm_waitany(comms, -1);
-    xbt_dynar_free(&comms);
-    // Not found:
-    if (idx == -1)
-      return last;
-    // Lift the index to the corresponding iterator:
-    auto res       = std::next(first, idx);
-    (*res)->state_ = finished;
-    return res;
+    return wait_any_for(first, last, -1);
   }
   /*! Same as wait_any, but with a timeout. If the timeout occurs, parameter last is returned.*/
   template <class I> static I wait_any_for(I first, I last, double timeout)
   }
   /*! Same as wait_any, but with a timeout. If the timeout occurs, parameter last is returned.*/
   template <class I> static I wait_any_for(I first, I last, double timeout)