bool has_no_successor() const { return successors_.empty(); }
const std::set<ActivityPtr>& get_dependencies() const { return dependencies_; }
const std::vector<ActivityPtr>& get_successors() const { return successors_; }
- virtual void fire_this_completion() const = 0;
protected:
Activity() = default;
* It is forbidden to change the amount of work once the Activity is started */
Activity* set_remaining(double remains);
+ virtual void fire_this_completion() const = 0;
+
private:
static xbt::signal<void(Activity&)> on_veto;
static xbt::signal<void(Activity const&)> on_suspend;
std::string name_ = "unnamed";
std::string tracing_category_ = "";
-public:
+protected:
inline static xbt::signal<void(AnyActivity const&)> on_completion;
+
+public:
/*! Add a callback fired when the activity completes (either normally, cancelled or failed) */
static void on_completion_cb(const std::function<void(AnyActivity const&)>& cb) { on_completion.connect(cb); }
static xbt::signal<void(Comm const&)> on_recv;
static xbt::signal<void(Comm const&)> on_start;
+protected:
+ void fire_this_completion() const override { on_completion(*this); }
+
public:
static void on_send_cb(const std::function<void(Comm const&)>& cb) { on_send.connect(cb); }
static void on_recv_cb(const std::function<void(Comm const&)>& cb) { on_recv.connect(cb); }
static void on_start_cb(const std::function<void(Comm const&)>& cb) { on_start.connect(cb); }
- void fire_this_completion() const override { on_completion(*this); }
CommPtr set_copy_data_callback(const std::function<void(kernel::activity::CommImpl*, void*, size_t)>& callback);
XBT_ATTRIB_DEPRECATED_v337("Please manifest if you actually need this function") static void copy_buffer_callback(
void reset() const;
static xbt::signal<void(Exec const&)> on_start;
+ void fire_this_completion() const override { on_completion(*this); }
public:
#ifndef DOXYGEN
#endif
/*! Signal fired each time that an execution actually starts (no veto) */
static void on_start_cb(const std::function<void(Exec const&)>& cb) { on_start.connect(cb); }
- void fire_this_completion() const override { on_completion(*this); }
static ExecPtr init();
protected:
explicit Io(kernel::activity::IoImplPtr pimpl);
Io* do_start() override;
+ void fire_this_completion() const override { on_completion(*this); }
public:
enum class OpType { READ, WRITE };
static void on_start_cb(const std::function<void(Io const&)>& cb) { on_start.connect(cb); }
- void fire_this_completion() const override { on_completion(*this); }
static IoPtr init();
/*! take a vector of s4u::IoPtr and return when one of them is finished.