Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
tiny cleanups in surf::VM
[simgrid.git] / src / surf / virtual_machine.cpp
index 1666df5..dfb0d1a 100644 (file)
@@ -39,8 +39,8 @@ VirtualMachine::VirtualMachine(HostModel *model, const char *name, simgrid::s4u:
 , hostPM_(hostPM)
 {
   allVms_.push_back(this);
-  piface = simgrid::s4u::Host::by_name_or_create(name);
-  piface->extension_set<simgrid::surf::HostImpl>(this);
+  piface_ = simgrid::s4u::Host::by_name_or_create(name);
+  piface_->extension_set<simgrid::surf::HostImpl>(this);
 }
 
 /*
@@ -57,11 +57,11 @@ VirtualMachine::~VirtualMachine()
 }
 
 e_surf_vm_state_t VirtualMachine::getState() {
-  return p_vm_state;
+  return vmState_;
 }
 
 void VirtualMachine::setState(e_surf_vm_state_t state) {
-  p_vm_state = state;
+  vmState_ = state;
 }
 void VirtualMachine::turnOn() {
   if (isOff()) {
@@ -75,6 +75,31 @@ void VirtualMachine::turnOff() {
     onVmStateChange(this);
   }
 }
+void VirtualMachine::suspend()
+{
+  action_->suspend();
+  vmState_ = SURF_VM_STATE_SUSPENDED;
+}
+
+void VirtualMachine::resume()
+{
+  action_->resume();
+  vmState_ = SURF_VM_STATE_RUNNING;
+}
+
+void VirtualMachine::save()
+{
+  vmState_ = SURF_VM_STATE_SAVING;
+  action_->suspend();
+  vmState_ = SURF_VM_STATE_SAVED;
+}
+
+void VirtualMachine::restore()
+{
+  vmState_ = SURF_VM_STATE_RESTORING;
+  action_->resume();
+  vmState_ = SURF_VM_STATE_RUNNING;
+}
 
 /** @brief returns the physical machine on which the VM is running **/
 sg_host_t VirtualMachine::getPm() {