#include <simgrid/s4u/Actor.hpp>
#include <simgrid/s4u/Host.hpp>
+#include "src/internal_config.h"
#include "src/kernel/EngineImpl.hpp"
#if HAVE_SMPI
#include "src/smpi/include/private.hpp"
ActorImpl::~ActorImpl()
{
- if (EngineImpl::has_instance() && not EngineImpl::get_instance()->is_maestro(this))
+ if (EngineImpl::has_instance() && not EngineImpl::get_instance()->is_maestro(this)) {
s4u::Actor::on_destruction(*get_ciface());
+ get_ciface()->on_this_destruction(*get_ciface());
+ }
}
/* Become an actor in the simulation
if (not kernel_destroy_list_hook.is_linked())
engine->add_actor_to_destroy_list(*this);
- if (has_to_auto_restart() && not get_host()->is_on()) {
- XBT_DEBUG("Insert host %s to watched_hosts because it's off and %s needs to restart", get_host()->get_cname(),
- get_cname());
- watched_hosts().insert(get_host()->get_name());
- }
-
undaemonize();
s4u::Actor::on_termination(*get_ciface());
+ get_ciface()->on_this_termination(*get_ciface());
while (not mailboxes_.empty())
mailboxes_.back()->set_receiver(nullptr);
activity::ActivityImplPtr activity = waiting_synchro_;
activity->cancel();
activity->set_state(activity::State::FAILED);
- activity->post();
+ activity->finish();
activities_.erase(waiting_synchro_);
waiting_synchro_ = nullptr;
{
activity::ActivityImplPtr sleep_activity = this->sleep(timeout);
if (actor->wannadie() || actor->to_be_freed()) {
- if (sleep_activity->surf_action_)
- sleep_activity->surf_action_->finish(resource::Action::State::FINISHED);
+ if (sleep_activity->model_action_)
+ sleep_activity->model_action_->finish(resource::Action::State::FINISHED);
} else {
actor->on_exit->emplace_back([sleep_activity](bool) {
- if (sleep_activity->surf_action_)
- sleep_activity->surf_action_->finish(resource::Action::State::FINISHED);
+ if (sleep_activity->model_action_)
+ sleep_activity->model_action_->finish(resource::Action::State::FINISHED);
});
}
return sleep_activity;
throw_exception(std::make_exception_ptr(
HostFailureException(XBT_THROW_POINT, "Host " + host_->get_name() + " failed, you cannot sleep there.")));
- auto sleep_activity = new activity::SleepImpl();
+ auto* sleep_activity = new activity::SleepImpl();
sleep_activity->set_name("sleep").set_host(host_).set_duration(duration).start();
return activity::SleepImplPtr(sleep_activity);
}
/** (in kernel mode) unpack the simcall and activate the handler */
void ActorImpl::simcall_handle(int times_considered)
{
- XBT_DEBUG("Handling simcall %p: %s(%ld) %s", &simcall_, simcall_.issuer_->get_cname(), simcall_.issuer_->get_pid(),
- (simcall_.observer_ != nullptr ? simcall_.observer_->to_string().c_str() : simcall_.get_cname()));
+ XBT_DEBUG("Handling simcall %p: %s(%ld) %s (times_considered:%d)", &simcall_, simcall_.issuer_->get_cname(),
+ simcall_.issuer_->get_pid(),
+ (simcall_.observer_ != nullptr ? simcall_.observer_->to_string().c_str() : simcall_.get_cname()),
+ times_considered);
if (simcall_.observer_ != nullptr)
simcall_.observer_->prepare(times_considered);
if (wannadie())