+ double get_start_time() const { return start_time_; }
+ void set_finish_time(double finish_time) { finish_time_ = finish_time; }
+ double get_finish_time() const { return finish_time_; }
+
+ virtual bool test(actor::ActorImpl* issuer);
+ static ssize_t test_any(actor::ActorImpl* issuer, const std::vector<ActivityImpl*>& activities);
+
+ virtual void wait_for(actor::ActorImpl* issuer, double timeout);
+ static void wait_any_for(actor::ActorImpl* issuer, const std::vector<ActivityImpl*>& activities, double timeout);
+ virtual ActivityImpl& set_timeout(double) { THROW_UNIMPLEMENTED; }
+
+ virtual void suspend();
+ virtual void resume();
+ virtual void cancel();
+
+ virtual void set_exception(actor::ActorImpl* issuer) = 0; // Raising exceptions and stuff
+ virtual void finish() = 0; // Setups the status, clean things up, unlock all simcalls blocked on that activity.
+
+ s4u::Host* get_host() const { return hosts_.front(); }
+ const std::vector<s4u::Host*>& get_hosts() const { return hosts_; };
+
+ void register_simcall(actor::Simcall* simcall);
+ void unregister_simcall(actor::Simcall* simcall);
+ void handle_activity_waitany(actor::Simcall* simcall);
+ void clean_action();
+ virtual double get_remaining() const;
+ // Support for the boost::intrusive_ptr<ActivityImpl> datatype