X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/5fb3a7567872d71ff4db33f4b26787ad5846784b..3b2dbb5d7bb46fcea379d478c77df4de1910403c:/src/surf/HostImpl.cpp diff --git a/src/surf/HostImpl.cpp b/src/surf/HostImpl.cpp index e9c5984977..f701211890 100644 --- a/src/surf/HostImpl.cpp +++ b/src/surf/HostImpl.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2013-2019. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2013-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. */ @@ -36,11 +36,11 @@ HostImpl::~HostImpl() { /* All actors should be gone when the host is turned off (by the end of the simulation). */ if (not actor_list_.empty()) { - std::string msg = std::string("Shutting down host, but it's not empty:"); + std::string msg = "Shutting down host, but it's not empty:"; for (auto const& actor : actor_list_) msg += "\n\t" + std::string(actor.get_name()); - SIMIX_display_process_status(); + simix_global->display_all_actor_status(); xbt_die("%s", msg.c_str()); } for (auto const& arg : actors_at_boot_) @@ -55,7 +55,7 @@ HostImpl::~HostImpl() * * Weird things will happen if you turn on a host that is already on. S4U is fool-proof, not this. */ -void HostImpl::turn_on() +void HostImpl::turn_on() const { for (auto const& arg : actors_at_boot_) { XBT_DEBUG("Booting Actor %s(%s) right now", arg->name.c_str(), arg->host->get_cname()); @@ -73,7 +73,7 @@ void HostImpl::turn_on() } /** Kill all actors hosted here */ -void HostImpl::turn_off(kernel::actor::ActorImpl* issuer) +void HostImpl::turn_off(const kernel::actor::ActorImpl* issuer) { for (auto& actor : actor_list_) { XBT_DEBUG("Killing Actor %s@%s on behalf of %s which turned off that host.", actor.get_cname(), @@ -82,7 +82,7 @@ void HostImpl::turn_off(kernel::actor::ActorImpl* issuer) } // When a host is turned off, we want to keep only the actors that should restart for when it will boot again. // Then get rid of the others. - auto elm = remove_if(begin(actors_at_boot_), end(actors_at_boot_), [](kernel::actor::ProcessArg* arg) { + auto elm = remove_if(begin(actors_at_boot_), end(actors_at_boot_), [](const kernel::actor::ProcessArg* arg) { if (arg->auto_restart) return false; delete arg; @@ -95,15 +95,15 @@ std::vector HostImpl::get_all_actors() { std::vector res; for (auto& actor : actor_list_) - res.push_back(actor.ciface()); + res.emplace_back(actor.ciface()); return res; } -size_t HostImpl::get_actor_count() +size_t HostImpl::get_actor_count() const { return actor_list_.size(); } -std::vector HostImpl::get_disks() +std::vector HostImpl::get_disks() const { std::vector disks; for (auto const& d : disks_) @@ -111,7 +111,14 @@ std::vector HostImpl::get_disks() return disks; } -void HostImpl::add_disk(s4u::Disk* disk) +void HostImpl::set_disks(const std::vector& disks, s4u::Host* host) +{ + disks_ = std::move(disks); + for (auto d : disks_) + d->set_host(host); +} + +void HostImpl::add_disk(const s4u::Disk* disk) { disks_.push_back(disk->get_impl()); } @@ -136,6 +143,13 @@ std::vector HostImpl::get_attached_storages() storages.push_back(s.second->get_iface()->get_cname()); return storages; } - +std::unordered_map* HostImpl::get_mounted_storages() +{ + auto* mounts = new std::unordered_map(); + for (auto const& m : storage_) { + mounts->insert({m.first, m.second->get_iface()}); + } + return mounts; +} } // namespace surf } // namespace simgrid