From: Frederic Suter Date: Fri, 8 Feb 2019 11:55:25 +0000 (+0100) Subject: namespace and method chaining for Io activities X-Git-Tag: v3_22~377 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/ecd7e9547367c8d7117115ce816538fdfeb0e0ea?hp=-c namespace and method chaining for Io activities --- ecd7e9547367c8d7117115ce816538fdfeb0e0ea diff --git a/src/kernel/activity/IoImpl.cpp b/src/kernel/activity/IoImpl.cpp index 00fa1b4824..2d21d2793c 100644 --- a/src/kernel/activity/IoImpl.cpp +++ b/src/kernel/activity/IoImpl.cpp @@ -9,44 +9,48 @@ #include "src/surf/StorageImpl.hpp" XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix_io); +namespace simgrid { +namespace kernel { +namespace activity { -simgrid::kernel::activity::IoImpl::IoImpl(std::string name, simgrid::surf::StorageImpl* storage) - : ActivityImpl(name), storage_(storage) +IoImpl::IoImpl(std::string name, surf::StorageImpl* storage) : ActivityImpl(name), storage_(storage) { this->state_ = SIMIX_RUNNING; XBT_DEBUG("Create io impl %p", this); } -simgrid::kernel::activity::IoImpl::~IoImpl() +IoImpl::~IoImpl() { if (surf_action_ != nullptr) surf_action_->unref(); XBT_DEBUG("Destroy io %p", this); } -void simgrid::kernel::activity::IoImpl::start(sg_size_t size, simgrid::s4u::Io::OpType type) +IoImpl* IoImpl::start(sg_size_t size, simgrid::s4u::Io::OpType type) { surf_action_ = storage_->io_start(size, type); surf_action_->set_data(this); XBT_DEBUG("Create IO synchro %p %s", this, name_.c_str()); simgrid::kernel::activity::IoImpl::on_start(this); + + return this; } -void simgrid::kernel::activity::IoImpl::cancel() +void IoImpl::cancel() { XBT_VERB("This exec %p is canceled", this); if (surf_action_ != nullptr) surf_action_->cancel(); } -double simgrid::kernel::activity::IoImpl::get_remaining() +double IoImpl::get_remaining() { return surf_action_ ? surf_action_->get_remains() : 0; } -void simgrid::kernel::activity::IoImpl::post() +void IoImpl::post() { performed_ioops_ = surf_action_->get_cost(); switch (surf_action_->get_state()) { @@ -67,5 +71,9 @@ void simgrid::kernel::activity::IoImpl::post() /************* * Callbacks * *************/ -simgrid::xbt::signal simgrid::kernel::activity::IoImpl::on_start; -simgrid::xbt::signal simgrid::kernel::activity::IoImpl::on_completion; +xbt::signal IoImpl::on_start; +xbt::signal IoImpl::on_completion; + +} // namespace activity +} // namespace kernel +} // namespace simgrid diff --git a/src/kernel/activity/IoImpl.hpp b/src/kernel/activity/IoImpl.hpp index b1275e3ac3..dd4ecebea5 100644 --- a/src/kernel/activity/IoImpl.hpp +++ b/src/kernel/activity/IoImpl.hpp @@ -19,7 +19,7 @@ public: ~IoImpl() override; explicit IoImpl(std::string name, surf::StorageImpl* storage); - void start(sg_size_t size, simgrid::s4u::Io::OpType type); + IoImpl* start(sg_size_t size, simgrid::s4u::Io::OpType type); void post() override; void cancel(); double get_remaining(); diff --git a/src/s4u/s4u_Storage.cpp b/src/s4u/s4u_Storage.cpp index f0bd686d3e..e32bf4e8dd 100644 --- a/src/s4u/s4u_Storage.cpp +++ b/src/s4u/s4u_Storage.cpp @@ -63,30 +63,24 @@ IoPtr Storage::io_init(sg_size_t size, Io::OpType type) IoPtr Storage::read_async(sg_size_t size) { - IoPtr res = io_init(size, Io::OpType::READ); - res->start(); - return res; + return IoPtr(io_init(size, Io::OpType::READ))->start(); } sg_size_t Storage::read(sg_size_t size) { - IoPtr i = io_init(size, Io::OpType::READ); - i->start()->wait(); + IoPtr i = IoPtr(io_init(size, Io::OpType::READ))->start()->wait(); return i->get_performed_ioops(); } IoPtr Storage::write_async(sg_size_t size) { - IoPtr res = io_init(size, Io::OpType::WRITE); - res->start(); - return res; + return IoPtr(io_init(size, Io::OpType::WRITE)->start()); } sg_size_t Storage::write(sg_size_t size) { - IoPtr i = io_init(size, Io::OpType::WRITE); - i->start()->wait(); + IoPtr i = IoPtr(io_init(size, Io::OpType::WRITE))->start()->wait(); return i->get_performed_ioops(); }