#include "src/kernel/activity/IoImpl.hpp"
#include "src/simix/smx_io_private.hpp"
#include "xbt/log.h"
-#include <string>
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(s4u_io, s4u_activity, "S4U asynchronous IOs");
namespace simgrid {
namespace s4u {
-Activity* Io::start()
+Io* Io::start()
{
Activity::set_remaining(size_);
pimpl_ = simix::simcall([this] {
return this;
}
-Activity* Io::cancel()
+Io* Io::cancel()
{
simgrid::simix::simcall([this] { dynamic_cast<kernel::activity::IoImpl*>(pimpl_.get())->cancel(); });
state_ = State::CANCELED;
return this;
}
-Activity* Io::wait()
+Io* Io::wait()
{
simcall_io_wait(pimpl_);
state_ = State::FINISHED;
return this;
}
-Activity* Io::wait(double timeout)
+Io* Io::wait_for(double timeout)
{
THROW_UNIMPLEMENTED;
return this;
}
+bool Io::test()
+{
+ xbt_assert(state_ == State::INITED || state_ == State::STARTED || state_ == State::FINISHED);
+
+ if (state_ == State::FINISHED)
+ return true;
+
+ if (state_ == State::INITED)
+ this->start();
+
+ THROW_UNIMPLEMENTED;
+
+ return false;
+}
+
/** @brief Returns the amount of flops that remain to be done */
double Io::get_remaining()
{