X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/417ed3b671abe3a71fa4106d23d0a432084cc207..ac389dc4950914073f9d0e80703e7593590babb9:/src/s4u/s4u_Io.cpp diff --git a/src/s4u/s4u_Io.cpp b/src/s4u/s4u_Io.cpp index 191abc17ad..a0482b5ca7 100644 --- a/src/s4u/s4u_Io.cpp +++ b/src/s4u/s4u_Io.cpp @@ -3,6 +3,7 @@ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ +#include #include #include #include @@ -14,7 +15,6 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(s4u_io, s4u_activity, "S4U asynchronous I/Os"); namespace simgrid::s4u { -xbt::signal Io::on_start; Io::Io(kernel::activity::IoImplPtr pimpl) { @@ -90,16 +90,23 @@ Io* Io::do_start() pimpl_->suspend(); state_ = State::STARTED; - on_start(*this); + fire_on_start(); + fire_on_this_start(); return this; } -ssize_t Io::wait_any_for(const std::vector& ios, double timeout) +ssize_t Io::deprecated_wait_any_for(const std::vector& ios, double timeout) { - std::vector activities; + ActivitySet set; for (const auto& io : ios) - activities.push_back(boost::dynamic_pointer_cast(io)); - return Activity::wait_any_for(activities, timeout); + set.push(boost::dynamic_pointer_cast(io)); + + auto* ret = set.wait_any_for(timeout).get(); + for (size_t i = 0; i < ios.size(); i++) + if (ios[i].get() == ret) + return i; + + return -1; } IoPtr Io::set_disk(const_sg_disk_t disk)