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 71710c4..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) {
@@ -154,7 +154,7 @@ void Host::route_to(Host* dest, std::vector<Link*>& links, double* latency)
   std::vector<kernel::resource::LinkImpl*> linkImpls;
   this->route_to(dest, linkImpls, latency);
   for (kernel::resource::LinkImpl* const& l : linkImpls)
-    links.push_back(&l->piface_);
+    links.push_back(l->get_iface());
 }
 
 /** @brief Just like Host::routeTo, but filling an array of link implementations */
@@ -311,7 +311,7 @@ std::unordered_map<std::string, Storage*> const& Host::get_mounted_storages()
   if (mounts_ == nullptr) {
     mounts_ = new std::unordered_map<std::string, Storage*>();
     for (auto const& m : this->pimpl_->storage_) {
-      mounts_->insert({m.first, &m.second->piface_});
+      mounts_->insert({m.first, m.second->get_iface()});
     }
   }
   return *mounts_;
@@ -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)