#include <string>
#include <list>
-#include <xbt/base.h>
#include "simgrid/forward.h"
+#include <xbt/utility.hpp>
#include <atomic>
#include <simgrid/kernel/resource/Action.hpp>
namespace simgrid {
namespace kernel {
namespace activity {
-enum class State {
- WAITING = 0,
- READY,
- RUNNING,
- DONE,
- CANCELED,
- FAILED,
- SRC_HOST_FAILURE,
- DST_HOST_FAILURE,
- TIMEOUT,
- SRC_TIMEOUT,
- DST_TIMEOUT,
- LINK_FAILURE
-};
+
+XBT_DECLARE_ENUM_CLASS(State, WAITING, READY, RUNNING, DONE, CANCELED, FAILED, SRC_HOST_FAILURE, DST_HOST_FAILURE,
+ TIMEOUT, SRC_TIMEOUT, DST_TIMEOUT, LINK_FAILURE);
class XBT_PUBLIC ActivityImpl {
std::atomic_int_fast32_t refcount_{0};
const std::string& get_name() const { return name_; }
const char* get_cname() const { return name_.c_str(); }
- bool test();
- void wait_for(actor::ActorImpl* issuer, double timeout);
+ virtual bool test();
+ virtual void wait_for(actor::ActorImpl* issuer, double timeout);
virtual ActivityImpl& set_timeout(double) { THROW_UNIMPLEMENTED; }
virtual void suspend();
virtual void finish() = 0; // Unlock all simcalls blocked on that activity, either because it was marked as done by
// the model or because it terminated without waiting for the model
- virtual void register_simcall(smx_simcall_t simcall);
+ void register_simcall(smx_simcall_t simcall);
+ void unregister_simcall(smx_simcall_t simcall);
void clean_action();
virtual double get_remaining() const;
const char* get_state_str() const;