Host::~Host()
{
- /* Clean Simulator data */
+ /* All processes should be gone when the host is turned off (by the end of the simulation). */
if (xbt_swag_size(process_list) != 0) {
std::string msg = std::string("Shutting down host, but it's not empty:");
smx_actor_t process = nullptr;
for (auto const& arg : boot_processes) {
XBT_DEBUG("Booting Process %s(%s) right now", arg->name.c_str(), arg->host->getCname());
smx_actor_t actor = simix_global->create_process_function(arg->name.c_str(), arg->code, nullptr, arg->host,
- arg->properties, nullptr);
+ arg->properties.get(), nullptr);
if (arg->kill_time >= 0)
simcall_process_set_kill_time(actor, arg->kill_time);
if (arg->auto_restart)
smx_actor_t process = nullptr;
xbt_swag_foreach(process, host->process_list) {
SIMIX_process_kill(process, issuer);
- XBT_DEBUG("Killing %s@%s on behalf of %s", process->cname(), process->host->getCname(), issuer->cname());
+ XBT_DEBUG("Killing %s@%s on behalf of %s which turned off that host.", process->cname(),
+ process->host->getCname(), issuer->cname());
}
}
} else {
arg->data = data;
arg->host = host;
arg->kill_time = kill_time;
- arg->properties = properties;
+ arg->properties.reset(properties, [](decltype(properties)) {});
arg->auto_restart = auto_restart;
if (host->isOff() && watched_hosts.find(host->getCname()) == watched_hosts.end()) {
for (auto const& arg : process_list) {
XBT_DEBUG("Restarting Process %s@%s right now", arg->name.c_str(), arg->host->getCname());
smx_actor_t actor = simix_global->create_process_function(arg->name.c_str(), arg->code, nullptr, arg->host,
- arg->properties, nullptr);
+ arg->properties.get(), nullptr);
if (arg->kill_time >= 0)
simcall_process_set_kill_time(actor, arg->kill_time);
if (arg->auto_restart)