X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/c2f2254d18ea12282dbc23cc2ff196be1ed89423..9a74a4d9c970bf6b49d2c15d284ca190451d5ef6:/src/surf/vm_workstation_interface.cpp diff --git a/src/surf/vm_workstation_interface.cpp b/src/surf/vm_workstation_interface.cpp index 7a24d2d04e..688ad12418 100644 --- a/src/surf/vm_workstation_interface.cpp +++ b/src/surf/vm_workstation_interface.cpp @@ -1,9 +1,9 @@ -/* - * vm_workstation.cpp - * - * Created on: Nov 12, 2013 - * Author: bedaride - */ +/* Copyright (c) 2013-2014. The SimGrid Team. + * All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + #include "vm_workstation_interface.hpp" #include "cpu_cas01.hpp" @@ -12,6 +12,14 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_vm_workstation, surf, WorkstationVMModelPtr surf_vm_workstation_model = NULL; +/************* + * Callbacks * + *************/ + +surf_callback(void, WorkstationVMPtr) workstationVMCreatedCallbacks; +surf_callback(void, WorkstationVMPtr) workstationVMDestructedCallbacks; +surf_callback(void, WorkstationVMPtr) workstationVMStateChangedCallbacks; + /********* * Model * *********/ @@ -20,16 +28,34 @@ WorkstationVMModel::WorkstationVMModel() : WorkstationModel("Virtual Workstation p_cpuModel = surf_cpu_model_vm; } +WorkstationVMModel::vm_list_t WorkstationVMModel::ws_vms; + /************ * Resource * ************/ +WorkstationVM::WorkstationVM(ModelPtr model, const char *name, xbt_dict_t props, + RoutingEdgePtr netElm, CpuPtr cpu) +: Workstation(model, name, props, NULL, netElm, cpu) +{ + WorkstationVMModel::ws_vms.push_back(*this); + surf_callback_emit(workstationVMCreatedCallbacks, this); +} + /* * A physical host does not disapper in the current SimGrid code, but a VM may * disapper during a simulation. */ WorkstationVM::~WorkstationVM() { + surf_callback_emit(workstationVMDestructedCallbacks, this); + WorkstationVMModel::ws_vms.erase(WorkstationVMModel:: + vm_list_t::s_iterator_to(*this)); +} + +void WorkstationVM::setState(e_surf_resource_state_t state){ + Resource::setState(state); + surf_callback_emit(workstationVMStateChangedCallbacks, this); } /*