A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
Misc code simplifications guided by Sonar smells.
[simgrid.git]
/
src
/
surf
/
HostImpl.cpp
diff --git
a/src/surf/HostImpl.cpp
b/src/surf/HostImpl.cpp
index
3e763b5
..
51f7f98
100644
(file)
--- a/
src/surf/HostImpl.cpp
+++ b/
src/surf/HostImpl.cpp
@@
-37,22
+37,27
@@
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 = "Shutting down host, but it's not empty:";
- for (auto const& actor : actor_list_)
- msg += "\n\t" + std::string(actor.get_name());
-
- EngineImpl::get_instance()->display_all_actor_status();
- xbt_die("%s", msg.c_str());
+ const char* msg = "Shutting down host, but it's not empty";
+ try {
+ std::string actors;
+ for (auto const& actor : actor_list_)
+ actors += "\n\t" + std::string(actor.get_name());
+
+ EngineImpl::get_instance()->display_all_actor_status();
+ xbt_die("%s:%s", msg, actors.c_str());
+ } catch (const std::bad_alloc& ba) {
+ xbt_die("%s (cannot print actor list: %s)", msg, ba.what());
+ }
}
for (auto const& arg : actors_at_boot_)
delete arg;
actors_at_boot_.clear();
- for (auto const&
d
: disks_)
- d
.second
->destroy();
+ for (auto const&
[_, d]
: disks_)
+ d->destroy();
- for (auto const&
vm
: vms_)
- vm
.second
->vm_destroy();
+ for (auto const&
[_, vm]
: vms_)
+ vm->vm_destroy();
}
/** @brief Fire the required callbacks and destroy the object
@@
-81,10
+86,10
@@
void HostImpl::turn_on() const
void HostImpl::turn_off(const actor::ActorImpl* issuer)
{
/* turn_off VMs running on host */
- for (const auto&
kv
: vms_) {
- auto* actor = kernel::actor::ActorImpl::self();
-
kv.second->shutdown(actor
);
-
kv.second->turn_off(actor
);
+ for (const auto&
[_, vm]
: vms_) {
+ // call s4u functions to generate the good on_state_change signal, maybe one day this wont be necessary
+
vm->get_iface()->shutdown(
);
+
vm->get_iface()->turn_off(
);
}
for (auto& actor : actor_list_) {
XBT_DEBUG("Killing Actor %s@%s on behalf of %s which turned off that host.", actor.get_cname(),
@@
-133,14
+138,21
@@
size_t HostImpl::get_actor_count() const
std::vector<s4u::Disk*> HostImpl::get_disks() const
{
std::vector<s4u::Disk*> disks;
- for (auto const&
d
: disks_)
- disks.push_back(d
.second
->get_iface());
+ for (auto const&
[_, d]
: disks_)
+ disks.push_back(d->get_iface());
return disks;
}
s4u::VirtualMachine* HostImpl::create_vm(const std::string& name, int core_amount, size_t ramsize)
{
- auto* vm = new s4u::VirtualMachine(name, get_iface(), core_amount, ramsize);
+ auto* host_vm = new kernel::resource::VirtualMachineImpl(name, get_iface(), core_amount, ramsize);
+ auto* vm = new s4u::VirtualMachine(host_vm);
+ host_vm->set_piface(vm);
+ return create_vm(name, vm);
+}
+
+s4u::VirtualMachine* HostImpl::create_vm(const std::string& name, s4u::VirtualMachine* vm)
+{
vms_[name] = vm->get_vm_impl();
// Create a VCPU for this VM
@@
-148,7
+160,8
@@
s4u::VirtualMachine* HostImpl::create_vm(const std::string& name, int core_amoun
for (unsigned long i = 0; i < get_iface()->get_pstate_count(); i++)
speeds.push_back(get_iface()->get_pstate_speed(i));
- auto* cpu = englobing_zone_->get_cpu_vm_model()->create_cpu(vm, speeds)->set_core_count(core_amount);
+ auto* cpu =
+ englobing_zone_->get_cpu_vm_model()->create_cpu(vm, speeds)->set_core_count(vm->get_vm_impl()->get_core_amount());
if (get_iface()->get_pstate() != 0)
cpu->set_pstate(get_iface()->get_pstate());
@@
-181,16
+194,14
@@
void HostImpl::destroy_vm(const std::string& name)
VirtualMachineImpl* HostImpl::get_vm_by_name_or_null(const std::string& name) const
{
auto vm_it = vms_.find(name);
- if (vm_it != vms_.end())
- return vm_it->second;
- return nullptr;
+ return vm_it == vms_.end() ? nullptr : vm_it->second;
}
std::vector<s4u::VirtualMachine*> HostImpl::get_vms() const
{
std::vector<s4u::VirtualMachine*> vms;
- for (const auto&
kv
: vms_) {
- vms.push_back(
kv.second
->get_iface());
+ for (const auto&
[_, vm]
: vms_) {
+ vms.push_back(
vm
->get_iface());
}
return vms;
}
@@
-222,12
+233,12
@@
void HostImpl::seal()
sealed_ = true;
/* seal its disks */
- for (auto const&
disk
: disks_)
- disk
.second
->seal();
+ for (auto const&
[_, disk]
: disks_)
+ disk->seal();
/* seal its VMs */
- for (auto const&
vm
: vms_)
- vm
.second
->seal();
+ for (auto const&
[_, vm]
: vms_)
+ vm->seal();
}
} // namespace resource
} // namespace kernel