friend kernel::EngineImpl;
#endif
- static xbt::signal<void(Io const&)> on_start;
+ inline static xbt::signal<void(Io const&)> on_start;
+ xbt::signal<void(Io const&)> on_this_start;
protected:
explicit Io(kernel::activity::IoImplPtr pimpl);
Io* do_start() override;
void fire_on_completion() const override { on_completion(*this); }
+ void fire_on_this_completion() const override { on_this_completion(*this); }
void fire_on_veto() const override { on_veto(const_cast<Io&>(*this)); }
void fire_on_suspend() const override { on_suspend(*this); }
void fire_on_resume() const override { on_resume(*this); }
enum class OpType { READ, WRITE };
static void on_start_cb(const std::function<void(Io const&)>& cb) { on_start.connect(cb); }
+ void on_this_start_cb(const std::function<void(Io const&)>& cb) { on_this_start.connect(cb); }
static IoPtr init();
/*! take a vector of s4u::IoPtr and return when one of them is finished.