X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/472b2aa318353674993dffd9792f1a155f579d6f..12db8a46fc2350fc54dc04b12fc5580239ef23c4:/src/s4u/s4u_engine.cpp diff --git a/src/s4u/s4u_engine.cpp b/src/s4u/s4u_engine.cpp index 71bf83839b..c98ab30d3b 100644 --- a/src/s4u/s4u_engine.cpp +++ b/src/s4u/s4u_engine.cpp @@ -15,6 +15,8 @@ #include "simgrid/simix.h" #include "src/kernel/EngineImpl.hpp" #include "src/kernel/routing/NetZoneImpl.hpp" +#include "src/kernel/routing/NetCard.hpp" + #include "src/surf/network_interface.hpp" #include "surf/surf.h" // routing_platf. FIXME:KILLME. SOON @@ -114,7 +116,29 @@ NetZone* Engine::netzoneByNameOrNull(const char* name) /** @brief Retrieve the netcard of the given name (or nullptr if not found) */ simgrid::kernel::routing::NetCard* Engine::netcardByNameOrNull(const char* name) { - return static_cast(xbt_dict_get_or_null(netcards_dict, name)); + if (pimpl->netcards_.find(name) == pimpl->netcards_.end()) + return nullptr; + return pimpl->netcards_.at(name); +} +/** @brief Fill the provided vector with all existing netcards */ +void Engine::netcardList(std::vector* list) +{ + for (auto kv: pimpl->netcards_) + list->push_back(kv.second); +} +/** @brief Register a new netcard to the system */ +void Engine::netcardRegister(simgrid::kernel::routing::NetCard* card) +{ +// simgrid::simix::kernelImmediate([&]{ FIXME: this segfaults in set_thread + pimpl->netcards_[card->name()] = card; +// }); +} +/** @brief Unregister a given netcard */ +void Engine::netcardUnregister(simgrid::kernel::routing::NetCard* card) +{ + simgrid::simix::kernelImmediate([&]{ + pimpl->netcards_.erase(card->name()); + }); } } }