From: SUTER Frederic Date: Wed, 12 Jan 2022 08:22:02 +0000 (+0100) Subject: make all VM signals private X-Git-Tag: v3.30~97 X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/3e14a865d128adc125aa6b7e9404dfafe445c9e1?hp=03768cf4cb2f5854eec95865434ddacb5890894d make all VM signals private --- diff --git a/include/simgrid/s4u/VirtualMachine.hpp b/include/simgrid/s4u/VirtualMachine.hpp index 41be4d1974..8a7a33cd6d 100644 --- a/include/simgrid/s4u/VirtualMachine.hpp +++ b/include/simgrid/s4u/VirtualMachine.hpp @@ -34,9 +34,19 @@ public: class XBT_PUBLIC VirtualMachine : public s4u::Host { kernel::resource::VirtualMachineImpl* const pimpl_vm_; + /* Signals about the life cycle of the VM */ + static xbt::signal on_creation; + static xbt::signal on_start; + static xbt::signal on_started; + static xbt::signal on_shutdown; + static xbt::signal on_suspend; + static xbt::signal on_resume; + static xbt::signal on_migration_start; + static xbt::signal on_migration_end; + static xbt::signal on_destruction; + public: - explicit VirtualMachine(const std::string& name, Host* physical_host, int core_amount); - explicit VirtualMachine(const std::string& name, Host* physical_host, int core_amount, size_t ramsize); + explicit VirtualMachine(const std::string& name, Host* physical_host, int core_amount, size_t ramsize = 1024); #ifndef DOXYGEN // No copy/move @@ -67,8 +77,12 @@ public: size_t get_ramsize() const; VirtualMachine* set_ramsize(size_t ramsize); VirtualMachine* set_bound(double bound); + void start_migration() const; + void end_migration() const; State get_state() const; + + /* Callbacks on signals */ static void on_creation_cb(const std::function& cb) { on_creation.connect(cb); } static void on_start_cb(const std::function& cb) { on_start.connect(cb); } static void on_started_cb(const std::function& cb) { on_started.connect(cb); } @@ -84,20 +98,6 @@ public: { on_migration_end.connect(cb); } -#ifndef DOXYGEN - /* FIXME the signals should be private */ - static xbt::signal on_migration_start; - static xbt::signal on_migration_end; - static xbt::signal on_destruction; -#endif - -private: - static xbt::signal on_creation; - static xbt::signal on_start; - static xbt::signal on_started; - static xbt::signal on_shutdown; - static xbt::signal on_suspend; - static xbt::signal on_resume; }; } // namespace s4u } // namespace simgrid diff --git a/src/kernel/resource/VirtualMachineImpl.cpp b/src/kernel/resource/VirtualMachineImpl.cpp index 2415f08616..16607a0386 100644 --- a/src/kernel/resource/VirtualMachineImpl.cpp +++ b/src/kernel/resource/VirtualMachineImpl.cpp @@ -195,7 +195,6 @@ VirtualMachineImpl::VirtualMachineImpl(const std::string& name, s4u::VirtualMach /** @brief A physical host does not disappear in the current SimGrid code, but a VM may disappear during a simulation */ void VirtualMachineImpl::vm_destroy() { - s4u::VirtualMachine::on_destruction(*piface_); /* I was already removed from the allVms set if the VM was destroyed cleanly */ auto iter = find(allVms_.begin(), allVms_.end(), piface_); if (iter != allVms_.end()) diff --git a/src/plugins/vm/VmLiveMigration.cpp b/src/plugins/vm/VmLiveMigration.cpp index 6eae98ecbf..607f75b9d4 100644 --- a/src/plugins/vm/VmLiveMigration.cpp +++ b/src/plugins/vm/VmLiveMigration.cpp @@ -336,8 +336,7 @@ void sg_vm_migrate(simgrid::s4u::VirtualMachine* vm, simgrid::s4u::Host* dst_pm) XBT_THROW_POINT, simgrid::xbt::string_printf("Cannot migrate VM '%s' that is already migrating.", vm->get_cname())); - vm->get_vm_impl()->start_migration(); - simgrid::s4u::VirtualMachine::on_migration_start(*vm); + vm->start_migration(); std::string rx_name = std::string("__pr_mig_rx:") + vm->get_cname() + "(" + src_pm->get_cname() + "-" + dst_pm->get_cname() + ")"; @@ -359,6 +358,5 @@ void sg_vm_migrate(simgrid::s4u::VirtualMachine* vm, simgrid::s4u::Host* dst_pm) tx->join(); rx->join(); - vm->get_vm_impl()->end_migration(); - simgrid::s4u::VirtualMachine::on_migration_end(*vm); + vm->end_migration(); } diff --git a/src/s4u/s4u_VirtualMachine.cpp b/src/s4u/s4u_VirtualMachine.cpp index 4148c08291..a8b70377af 100644 --- a/src/s4u/s4u_VirtualMachine.cpp +++ b/src/s4u/s4u_VirtualMachine.cpp @@ -32,11 +32,6 @@ void VmHostExt::ensureVmExtInstalled() EXTENSION_ID = Host::extension_create(); } -VirtualMachine::VirtualMachine(const std::string& name, s4u::Host* physical_host, int core_amount) - : VirtualMachine(name, physical_host, core_amount, 1024) -{ -} - VirtualMachine::VirtualMachine(const std::string& name, s4u::Host* physical_host, int core_amount, size_t ramsize) : Host(new kernel::resource::VirtualMachineImpl(name, this, physical_host, core_amount, ramsize)) , pimpl_vm_(dynamic_cast(Host::get_impl())) @@ -125,7 +120,7 @@ void VirtualMachine::destroy() shutdown(); XBT_DEBUG("destroy %s", get_cname()); - + on_destruction(*this); /* Then, destroy the VM object */ kernel::actor::simcall([this]() { get_vm_impl()->vm_destroy(); @@ -206,6 +201,18 @@ VirtualMachine* VirtualMachine::set_bound(double bound) return this; } +void VirtualMachine::start_migration() const +{ + pimpl_vm_->start_migration(); + on_migration_start(*this); +} + +void VirtualMachine::end_migration() const +{ + pimpl_vm_->end_migration(); + on_migration_end(*this); +} + } // namespace s4u } // namespace simgrid