-/* Copyright (c) 2007-2019. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2007-2020. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
namespace kernel {
namespace activity {
-ExecImpl::~ExecImpl()
-{
- if (timeout_detector_)
- timeout_detector_->unref();
- XBT_DEBUG("Destroy exec %p", this);
-}
-
ExecImpl& ExecImpl::set_host(s4u::Host* host)
{
if (not hosts_.empty())
ExecImpl& ExecImpl::set_timeout(double timeout)
{
if (timeout > 0 && not MC_is_active() && not MC_record_replay_is_active()) {
- timeout_detector_ = hosts_.front()->pimpl_cpu->sleep(timeout);
+ timeout_detector_.reset(hosts_.front()->pimpl_cpu->sleep(timeout));
timeout_detector_->set_activity(this);
}
return *this;
}
clean_action();
-
- if (timeout_detector_) {
- timeout_detector_->unref();
- timeout_detector_ = nullptr;
- }
-
+ timeout_detector_.reset();
/* Answer all simcalls associated with the synchro */
finish();
}
}
switch (state_) {
-
case State::DONE:
/* do nothing, synchro done */
XBT_DEBUG("ExecImpl::finish(): execution successful");
case State::FAILED:
XBT_DEBUG("ExecImpl::finish(): host '%s' failed", simcall->issuer_->get_host()->get_cname());
- simcall->issuer_->context_->iwannadie = true;
+ simcall->issuer_->context_->set_wannadie();
if (simcall->issuer_->get_host()->is_on())
simcall->issuer_->exception_ =
std::make_exception_ptr(simgrid::HostFailureException(XBT_THROW_POINT, "Host failed"));
if (simcall->issuer_->get_host()->is_on())
simcall->issuer_->simcall_answer();
else
- simcall->issuer_->context_->iwannadie = true;
+ simcall->issuer_->context_->set_wannadie();
}
}