X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1ed359ee7868e2bfd8bc04b0f5e06f0039e0189e..136b2dc7bfe5ff67d78a23f0e9e031b1b4bed639:/src/s4u/s4u_Host.cpp diff --git a/src/s4u/s4u_Host.cpp b/src/s4u/s4u_Host.cpp index b2731c416e..a99e6a8680 100644 --- a/src/s4u/s4u_Host.cpp +++ b/src/s4u/s4u_Host.cpp @@ -7,6 +7,8 @@ #include "simgrid/s4u/Actor.hpp" #include "simgrid/s4u/Engine.hpp" #include "simgrid/s4u/Exec.hpp" +#include "simgrid/s4u/VirtualMachine.hpp" +#include "src/plugins/vm/VirtualMachineImpl.hpp" #include "src/simix/smx_private.hpp" #include "src/surf/HostImpl.hpp" @@ -98,6 +100,11 @@ void Host::turn_off() { if (is_on()) { simix::simcall([this] { + for (VirtualMachine* const& vm : vm::VirtualMachineImpl::allVms_) + if (vm->get_pm() == this) { + vm->shutdown(); + vm->turn_off(); + } this->pimpl_cpu->turn_off(); this->pimpl_->turn_off(); @@ -132,22 +139,6 @@ int Host::get_actor_count() return pimpl_->get_actor_count(); } -/** @deprecated */ -void Host::getProcesses(std::vector* list) -{ - auto actors = get_all_actors(); - for (auto& actor : actors) - list->push_back(actor); -} - -/** @deprecated */ -void Host::actorList(std::vector* whereto) -{ - auto actors = get_all_actors(); - for (auto& actor : actors) - whereto->push_back(actor); -} - /** * @brief Find a route toward another host * @@ -181,9 +172,9 @@ void Host::route_to(Host* dest, std::vector& links, } /** Get the properties assigned to a host */ -std::unordered_map* Host::get_properties() +const std::unordered_map* Host::get_properties() const { - return simix::simcall([this] { return this->pimpl_->get_properties(); }); + return this->pimpl_->get_properties(); } /** Retrieve the property value (or nullptr if not set) */ @@ -196,6 +187,12 @@ void Host::set_property(const std::string& key, const std::string& value) { simix::simcall([this, &key, &value] { this->pimpl_->set_property(key, value); }); } + +void Host::set_properties(const std::map& properties) +{ + simix::simcall([this, &properties] { this->pimpl_->set_properties(properties); }); +} + /** Specify a profile turning the host on and off according to a exhaustive list or a stochastic law. * The profile must contain boolean values. */ void Host::set_state_profile(kernel::profile::Profile* p) @@ -283,13 +280,6 @@ std::vector Host::get_attached_storages() const return simix::simcall([this] { return this->pimpl_->get_attached_storages(); }); } -void Host::getAttachedStorages(std::vector* storages) -{ - std::vector local_storages = simix::simcall([this] { return this->pimpl_->get_attached_storages(); }); - for (auto elm : local_storages) - storages->push_back(elm); -} - std::unordered_map const& Host::get_mounted_storages() { if (mounts_ == nullptr) { @@ -528,7 +518,7 @@ int sg_host_is_off(sg_host_t host) xbt_dict_t sg_host_get_properties(sg_host_t host) { xbt_dict_t as_dict = xbt_dict_new_homogeneous(xbt_free_f); - std::unordered_map* props = host->get_properties(); + const std::unordered_map* props = host->get_properties(); if (props == nullptr) return nullptr; for (auto const& elm : *props) { @@ -607,7 +597,7 @@ void sg_host_dump(sg_host_t host) XBT_INFO("Displaying host %s", host->get_cname()); XBT_INFO(" - speed: %.0f", host->get_speed()); XBT_INFO(" - available speed: %.2f", sg_host_get_available_speed(host)); - std::unordered_map* props = host->get_properties(); + const std::unordered_map* props = host->get_properties(); if (not props->empty()) { XBT_INFO(" - properties:");