Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Host may be null (fix crash with logs).
[simgrid.git] / src / s4u / s4u_Host.cpp
index c2e0169..5022080 100644 (file)
@@ -75,7 +75,7 @@ Host* Host::by_name_or_null(const std::string& name)
 
 Host* Host::current()
 {
-  kernel::actor::ActorImpl* self = SIMIX_process_self();
+  kernel::actor::ActorImpl* self = kernel::actor::ActorImpl::self();
   if (self == nullptr)
     xbt_die("Cannot call Host::current() from the maestro context");
   return self->get_host();
@@ -96,7 +96,7 @@ void Host::turn_on()
 void Host::turn_off()
 {
   if (is_on()) {
-    kernel::actor::ActorImpl* self = SIMIX_process_self();
+    kernel::actor::ActorImpl* self = kernel::actor::ActorImpl::self();
     kernel::actor::simcall([this, self] {
       for (VirtualMachine* const& vm : vm::VirtualMachineImpl::allVms_)
         if (vm->get_pm() == this) {
@@ -427,7 +427,7 @@ xbt_dict_t sg_host_get_mounted_storage_list(sg_host_t host)
   xbt_dict_t res = xbt_dict_new_homogeneous(nullptr);
   for (auto const& elm : host->get_mounted_storages()) {
     const char* mount_name = elm.first.c_str();
-    sg_storage_t storage   = elm.second;
+    const simgrid::s4u::Storage* storage = elm.second;
     xbt_dict_set(res, mount_name, (void*)storage->get_cname());
   }
 
@@ -647,20 +647,26 @@ void sg_host_dump(sg_host_t host)
  */
 void sg_host_get_actor_list(sg_host_t host, xbt_dynar_t whereto)
 {
-  auto actors = host->get_all_actors();
-  for (auto& actor : actors)
+  auto const actors = host->get_all_actors();
+  for (auto const& actor : actors)
     xbt_dynar_push(whereto, &actor);
 }
 
 sg_host_t sg_host_self()
 {
-  return SIMIX_is_maestro() ? nullptr : SIMIX_process_self()->get_host();
+  return SIMIX_is_maestro() ? nullptr : simgrid::kernel::actor::ActorImpl::self()->get_host();
 }
 
 /* needs to be public and without simcall for exceptions and logging events */
 const char* sg_host_self_get_name()
 {
-  return SIMIX_is_maestro() ? "" : SIMIX_process_self()->get_host()->get_cname();
+  const char* res = "";
+  if (not SIMIX_is_maestro()) {
+    simgrid::s4u::Host* host = simgrid::kernel::actor::ActorImpl::self()->get_host();
+    if (host != nullptr)
+      res = host->get_cname();
+  }
+  return res;
 }
 
 double sg_host_load(sg_host_t host)