Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
put the HostImpl as s4u::Host->pimpl instead of as an extension
[simgrid.git] / src / simix / smx_vm.cpp
index 6c99ae8..fec4850 100644 (file)
@@ -14,7 +14,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_vm, simix, "Logging specific to SIMIX Virt
 static long host_get_ramsize(sg_host_t vm, int *overcommit)
 {
   s_vm_params_t params;
-  vm->extension<simgrid::surf::HostImpl>()->getParams(&params);
+  vm->pimpl_->getParams(&params);
 
   if (overcommit)
     *overcommit = params.overcommit;
@@ -42,7 +42,7 @@ static int __can_be_started(sg_host_t vm)
   }
 
   long total_ramsize_of_vms = 0;
-  xbt_dynar_t dyn_vms = pm->extension<simgrid::surf::HostImpl>()->getVms();
+  xbt_dynar_t dyn_vms = pm->pimpl_->getVms();
   {
     unsigned int cursor = 0;
     sg_host_t another_vm;
@@ -67,7 +67,7 @@ void SIMIX_vm_start(sg_host_t vm)
 {
   if (__can_be_started(vm))
     static_cast<simgrid::surf::VirtualMachine*>(
-      vm->extension<simgrid::surf::HostImpl>()
+      vm->pimpl_
     )->setState(SURF_VM_STATE_RUNNING);
   else
     THROWF(vm_error, 0, "The VM %s cannot be started", vm->name().c_str());
@@ -77,7 +77,7 @@ void SIMIX_vm_start(sg_host_t vm)
 e_surf_vm_state_t SIMIX_vm_get_state(sg_host_t vm)
 {
   return static_cast<simgrid::surf::VirtualMachine*>(
-    vm->extension<simgrid::surf::HostImpl>()
+    vm->pimpl_
   )->getState();
 }
 
@@ -289,7 +289,7 @@ void SIMIX_vm_shutdown(sg_host_t vm, smx_actor_t issuer)
 
   /* FIXME: we may have to do something at the surf layer, e.g., vcpu action */
   static_cast<simgrid::surf::VirtualMachine*>(
-    vm->extension<simgrid::surf::HostImpl>()
+    vm->pimpl_
   )->setState(SURF_VM_STATE_CREATED);
 }
 
@@ -298,12 +298,11 @@ void simcall_HANDLER_vm_shutdown(smx_simcall_t simcall, sg_host_t vm)
   SIMIX_vm_shutdown(vm, simcall->issuer);
 }
 
-extern xbt_dict_t host_list; // FIXME:killme don't dupplicate the content of s4u::Host this way
-                             /**
-                              * @brief Function to destroy a SIMIX VM host.
-                              *
-                              * @param vm the vm host to destroy (a sg_host_t)
-                              */
+/**
+ * @brief Function to destroy a SIMIX VM host.
+ *
+ * @param vm the vm host to destroy (a sg_host_t)
+ */
 void SIMIX_vm_destroy(sg_host_t vm)
 {
   /* this code basically performs a similar thing like SIMIX_host_destroy() */
@@ -321,6 +320,5 @@ void SIMIX_vm_destroy(sg_host_t vm)
   vm->pimpl_cpu = nullptr;
   vm->pimpl_netcard = nullptr;
 
-  if (xbt_dict_get_or_null(host_list, vm->name().c_str()))
-    xbt_dict_remove(host_list, vm->name().c_str());
+  vm->destroy();
 }