/*! take a vector s4u::CommPtr and return the rank of the first finished one (or -1 if none is done). */
static int test_any(std::vector<CommPtr> * comms);
- Activity* start() override;
- Activity* wait() override;
- Activity* wait_for(double timeout) override;
+ Comm* start() override;
+ Comm* wait() override;
+ Comm* wait_for(double timeout) override;
bool test() override;
/** Start the comm, and ignore its result. It can be completely forgotten after that. */
- Activity* detach();
+ Comm* detach();
/** Start the comm, and ignore its result. It can be completely forgotten after that. */
- Activity* detach(void (*clean_function)(void*))
+ Comm* detach(void (*clean_function)(void*))
{
clean_fun_ = clean_function;
return detach();
}
/** Sets the maximal communication rate (in byte/sec). Must be done before start */
- Activity* set_rate(double rate);
+ Comm* set_rate(double rate);
/** Specify the data to send.
*
* you can send a short buffer in your simulator, that represents a very large message
* in the simulated world, or the opposite.
*/
- Activity* set_src_data(void* buff);
+ Comm* set_src_data(void* buff);
/** Specify the size of the data to send. Not to be mixed with @ref Activity::set_remaining()
*
* That's the size of the data to actually copy in the simulator (ie, the data passed with Activity::set_src_data()).
* you can send a short buffer in your simulator, that represents a very large message
* in the simulated world, or the opposite.
*/
- Activity* set_src_data_size(size_t size);
+ Comm* set_src_data_size(size_t size);
/** Specify the data to send and its size. Don't mix the size with @ref Activity::set_remaining()
*
* This is way will get actually copied over to the receiver.
* you can send a short buffer in your simulator, that represents a very large message
* in the simulated world, or the opposite.
*/
- Activity* set_src_data(void* buff, size_t size);
+ Comm* set_src_data(void* buff, size_t size);
/** Specify where to receive the data.
*
* That's a buffer where the sent data will be copied */
- Activity* set_dst_data(void** buff);
+ Comm* set_dst_data(void** buff);
/** Specify the buffer in which the data should be received
*
* That's a buffer where the sent data will be copied */
- Activity* set_dst_data(void** buff, size_t size);
+ Comm* set_dst_data(void** buff, size_t size);
/** Retrieve the size of the received data. Not to be mixed with @ref Activity::set_remaining() */
size_t get_dst_data_size();
- Activity* cancel() override;
+ Comm* cancel() override;
/** Retrieve the mailbox on which this comm acts */
MailboxPtr get_mailbox();
static simgrid::xbt::signal<void(simgrid::s4u::ActorPtr)> on_start;
static simgrid::xbt::signal<void(simgrid::s4u::ActorPtr)> on_completion;
- Activity* start() override;
- Activity* wait() override;
- Activity* wait_for(double timeout) override;
- Activity* cancel() override;
+ Exec* start() override;
+ Exec* wait() override;
+ Exec* wait_for(double timeout) override;
+ Exec* cancel() override;
bool test() override;
ExecPtr set_priority(double priority);
~Io() = default;
- Activity* start() override;
- Activity* wait() override;
- Activity* wait_for(double timeout) override;
- Activity* cancel() override;
+ Io* start() override;
+ Io* wait() override;
+ Io* wait_for(double timeout) override;
+ Io* cancel() override;
bool test() override;
double get_remaining() override;
comm->wait();
}
-Activity* Comm::set_rate(double rate)
+Comm* Comm::set_rate(double rate)
{
xbt_assert(state_ == State::INITED, "You cannot use %s() once your communication started (not implemented)",
__FUNCTION__);
return this;
}
-Activity* Comm::set_src_data(void* buff)
+Comm* Comm::set_src_data(void* buff)
{
xbt_assert(state_ == State::INITED, "You cannot use %s() once your communication started (not implemented)",
__FUNCTION__);
src_buff_ = buff;
return this;
}
-Activity* Comm::set_src_data_size(size_t size)
+Comm* Comm::set_src_data_size(size_t size)
{
xbt_assert(state_ == State::INITED, "You cannot use %s() once your communication started (not implemented)",
__FUNCTION__);
src_buff_size_ = size;
return this;
}
-Activity* Comm::set_src_data(void* buff, size_t size)
+Comm* Comm::set_src_data(void* buff, size_t size)
{
xbt_assert(state_ == State::INITED, "You cannot use %s() once your communication started (not implemented)",
__FUNCTION__);
src_buff_size_ = size;
return this;
}
-Activity* Comm::set_dst_data(void** buff)
+Comm* Comm::set_dst_data(void** buff)
{
xbt_assert(state_ == State::INITED, "You cannot use %s() once your communication started (not implemented)",
__FUNCTION__);
xbt_assert(state_ == State::FINISHED, "You cannot use %s before your communication terminated", __FUNCTION__);
return dst_buff_size_;
}
-Activity* Comm::set_dst_data(void** buff, size_t size)
+Comm* Comm::set_dst_data(void** buff, size_t size)
{
xbt_assert(state_ == State::INITED, "You cannot use %s() once your communication started (not implemented)",
__FUNCTION__);
return this;
}
-Activity* Comm::start()
+Comm* Comm::start()
{
xbt_assert(state_ == State::INITED, "You cannot use %s() once your communication started (not implemented)",
__FUNCTION__);
}
/** @brief Block the calling actor until the communication is finished */
-Activity* Comm::wait()
+Comm* Comm::wait()
{
return this->wait_for(-1);
}
*
* @param timeout the amount of seconds to wait for the comm termination.
* Negative values denote infinite wait times. 0 as a timeout returns immediately. */
-Activity* Comm::wait_for(double timeout)
+Comm* Comm::wait_for(double timeout)
{
switch (state_) {
case State::FINISHED:
return res;
}
-Activity* Comm::detach()
+Comm* Comm::detach()
{
xbt_assert(state_ == State::INITED, "You cannot use %s() once your communication started (not implemented)",
__FUNCTION__);
return start();
}
-Activity* Comm::cancel()
+Comm* Comm::cancel()
{
simgrid::simix::simcall([this] { dynamic_cast<kernel::activity::CommImpl*>(pimpl_.get())->cancel(); });
state_ = State::CANCELED;
simgrid::xbt::signal<void(simgrid::s4u::ActorPtr)> s4u::Exec::on_start;
simgrid::xbt::signal<void(simgrid::s4u::ActorPtr)> s4u::Exec::on_completion;
-Activity* Exec::start()
+Exec* Exec::start()
{
pimpl_ = simcall_execution_start(name_, tracing_category_, flops_amount_, 1. / priority_, bound_, host_);
state_ = State::STARTED;
return this;
}
-Activity* Exec::cancel()
+Exec* Exec::cancel()
{
simgrid::simix::simcall([this] { dynamic_cast<kernel::activity::ExecImpl*>(pimpl_.get())->cancel(); });
state_ = State::CANCELED;
return this;
}
-Activity* Exec::wait()
+Exec* Exec::wait()
{
if (state_ == State::INITED)
start();
return this;
}
-Activity* Exec::wait_for(double timeout)
+Exec* Exec::wait_for(double timeout)
{
THROW_UNIMPLEMENTED;
return this;
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_for(double timeout)
+Io* Io::wait_for(double timeout)
{
THROW_UNIMPLEMENTED;
return this;