From: Martin Quinson Date: Thu, 15 Jun 2017 00:42:54 +0000 (+0200) Subject: we manipulate CommPtr and not Comm* nowadays X-Git-Tag: v3.16~92 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/965b2a6b28501ae4e5f17ac438fb44685a0bb5d1 we manipulate CommPtr and not Comm* nowadays don't trust the automatic conversions --- diff --git a/include/simgrid/s4u/Comm.hpp b/include/simgrid/s4u/Comm.hpp index 40f6a01394..8bf6c8f829 100644 --- a/include/simgrid/s4u/Comm.hpp +++ b/include/simgrid/s4u/Comm.hpp @@ -26,7 +26,7 @@ public: virtual ~Comm(); - /*! take a range of s4u::Comm* (last excluded) and return when one of them is finished. The return value is an + /*! take a range of s4u::CommPtr (last excluded) and return when one of them is finished. The return value is an * iterator on the finished Comms. */ template static I wait_any(I first, I last) { @@ -35,12 +35,13 @@ public: intrusive_ptr_release((simgrid::kernel::activity::ActivityImpl*)ptr); }); for (I iter = first; iter != last; iter++) { - Comm& comm = **iter; - if (comm.state_ == inited) - comm.start(); - xbt_assert(comm.state_ == started); - intrusive_ptr_add_ref(comm.pimpl_.get()); - xbt_dynar_push_as(comms, simgrid::kernel::activity::ActivityImpl*, comm.pimpl_.get()); + 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); @@ -53,7 +54,7 @@ public: (*res)->state_ = finished; return res; } - /*! Same as wait_any, but with a timeout. If wait_any_for return because of the timeout last is returned.*/ + /*! Same as wait_any, but with a timeout. If the timeout occurs, parameter last is returned.*/ template static I wait_any_for(I first, I last, double timeout) { // Map to dynar: @@ -61,12 +62,13 @@ public: intrusive_ptr_release((simgrid::kernel::activity::ActivityImpl*)ptr); }); for (I iter = first; iter != last; iter++) { - Comm& comm = **iter; - if (comm.state_ == inited) - comm.start(); - xbt_assert(comm.state_ == started); - intrusive_ptr_add_ref(comm.pimpl_.get()); - xbt_dynar_push_as(comms, simgrid::kernel::activity::ActivityImpl*, comm.pimpl_.get()); + 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, timeout);