Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Move all netcards into the dict, and the dict to the engine
[simgrid.git] / src / kernel / routing / NetCard.cpp
index 170ff54..e45e174 100644 (file)
@@ -5,16 +5,26 @@
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "src/kernel/routing/NetCard.hpp"
-#include "src/surf/surf_routing.hpp"
-#include <simgrid/s4u/host.hpp>
+#include "simgrid/s4u/engine.hpp"
+#include "simgrid/s4u/host.hpp"
+#include "surf/surf_routing.h"
 
-XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(surf_route);
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_route, surf, "Routing part of surf");
 
 namespace simgrid {
 namespace kernel {
 namespace routing {
 
 simgrid::xbt::signal<void(NetCard*)> NetCard::onCreation;
+
+NetCard::NetCard(std::string name, NetCard::Type componentType, NetZoneImpl* netzone_p)
+    : name_(name), componentType_(componentType), netzone_(netzone_p)
+{
+  if (netzone_p != nullptr)
+    id_ = netzone_p->addComponent(this);
+  xbt_dict_set(netcards_dict, name.c_str(), static_cast<void*>(this), nullptr);
+  simgrid::kernel::routing::NetCard::onCreation(this);
+}
 }
 }
 } // namespace simgrid::kernel::routing
@@ -25,10 +35,5 @@ simgrid::xbt::signal<void(NetCard*)> NetCard::onCreation;
  */
 simgrid::kernel::routing::NetCard* sg_netcard_by_name_or_null(const char* name)
 {
-  sg_host_t h                                = sg_host_by_name(name);
-  simgrid::kernel::routing::NetCard* netcard = h == nullptr ? nullptr : h->pimpl_netcard;
-  if (!netcard)
-    netcard =
-        static_cast<simgrid::kernel::routing::NetCard*>(xbt_lib_get_or_null(as_router_lib, name, ROUTING_ASR_LEVEL));
-  return netcard;
+  return simgrid::s4u::Engine::instance()->netcardByNameOrNull(name);
 }