From 162af51e54767c8e8f7481caeed9ae7d78f6bde6 Mon Sep 17 00:00:00 2001 From: Frederic Suter Date: Thu, 14 Nov 2019 11:00:12 +0100 Subject: [PATCH] store kernel-level objects in EngineImpl --- src/kernel/EngineImpl.cpp | 4 ++-- src/kernel/EngineImpl.hpp | 4 ++-- src/s4u/s4u_Engine.cpp | 25 ++++++++++++++----------- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/kernel/EngineImpl.cpp b/src/kernel/EngineImpl.cpp index 9a44225168..fcd5140c72 100644 --- a/src/kernel/EngineImpl.cpp +++ b/src/kernel/EngineImpl.cpp @@ -34,11 +34,11 @@ EngineImpl::~EngineImpl() for (auto const& kv : storages_) if (kv.second) - kv.second->get_impl()->destroy(); + kv.second->destroy(); for (auto const& kv : links_) if (kv.second) - kv.second->get_impl()->destroy(); + kv.second->destroy(); } void EngineImpl::load_deployment(const std::string& file) diff --git a/src/kernel/EngineImpl.hpp b/src/kernel/EngineImpl.hpp index cdef002e8b..c45e02fd2e 100644 --- a/src/kernel/EngineImpl.hpp +++ b/src/kernel/EngineImpl.hpp @@ -14,8 +14,8 @@ namespace kernel { class EngineImpl { std::map hosts_; - std::map links_; - std::map storages_; + std::map links_; + std::map storages_; std::unordered_map netpoints_; friend s4u::Engine; diff --git a/src/s4u/s4u_Engine.cpp b/src/s4u/s4u_Engine.cpp index de8004ee71..c4b8905b26 100644 --- a/src/s4u/s4u_Engine.cpp +++ b/src/s4u/s4u_Engine.cpp @@ -18,6 +18,7 @@ #include "src/instr/instr_private.hpp" #include "src/kernel/EngineImpl.hpp" #include "src/simix/smx_private.hpp" // For access to simix_global->process_list +#include "src/surf/StorageImpl.hpp" #include "src/surf/network_interface.hpp" #include "surf/surf.hpp" // routing_platf. FIXME:KILLME. SOON #include @@ -187,19 +188,19 @@ Link* Engine::link_by_name(const std::string& name) if (pimpl->links_.find(name) == pimpl->links_.end()) throw std::invalid_argument(std::string("Link not found: ") + name); - return pimpl->links_.at(name); + return pimpl->links_.at(name)->get_iface(); } /** @brief Find an link from its name (or nullptr if that link does not exist) */ Link* Engine::link_by_name_or_null(const std::string& name) { auto link = pimpl->links_.find(name); - return link == pimpl->links_.end() ? nullptr : link->second; + return link == pimpl->links_.end() ? nullptr : link->second->get_iface(); } void Engine::link_register(const std::string& name, Link* link) { - pimpl->links_[name] = link; + pimpl->links_[name] = link->get_impl(); } void Engine::link_unregister(const std::string& name) @@ -218,7 +219,7 @@ std::vector Engine::get_all_storages() { std::vector res; for (auto const& kv : pimpl->storages_) - res.push_back(kv.second); + res.push_back(kv.second->get_iface()); return res; } @@ -231,19 +232,19 @@ Storage* Engine::storage_by_name(const std::string& name) if (pimpl->storages_.find(name) == pimpl->storages_.end()) throw std::invalid_argument(std::string("Storage not found: ") + name); - return pimpl->storages_.at(name); + return pimpl->storages_.at(name)->get_iface(); } /** @brief Find a storage from its name (or nullptr if that storage does not exist) */ Storage* Engine::storage_by_name_or_null(const std::string& name) { auto storage = pimpl->storages_.find(name); - return storage == pimpl->storages_.end() ? nullptr : storage->second; + return storage == pimpl->storages_.end() ? nullptr : storage->second->get_iface(); } void Engine::storage_register(const std::string& name, Storage* storage) { - pimpl->storages_[name] = storage; + pimpl->storages_[name] = storage->get_impl(); } void Engine::storage_unregister(const std::string& name) @@ -262,16 +263,18 @@ std::vector Engine::get_all_links() { std::vector res; for (auto const& kv : pimpl->links_) - res.push_back(kv.second); + res.push_back(kv.second->get_iface()); return res; } std::vector Engine::get_filtered_links(const std::function& filter) { std::vector filtered_list; - for (auto const& kv : pimpl->links_) - if (filter(kv.second)) - filtered_list.push_back(kv.second); + for (auto const& kv : pimpl->links_) { + Link* l = kv.second->get_iface(); + if (filter(l)) + filtered_list.push_back(l); + } return filtered_list; } -- 2.20.1