Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
update function documentation and variable names in the As -> NetZone transition
[simgrid.git] / src / kernel / routing / NetCard.hpp
index 7a78c0a..3f03189 100644 (file)
@@ -6,10 +6,11 @@
 #ifndef KERNEL_ROUTING_NETCARD_HPP_
 #define KERNEL_ROUTING_NETCARD_HPP_
 
+#include <xbt/Extendable.hpp>
 #include <xbt/base.h>
 #include <xbt/signal.hpp>
 
-#include "src/kernel/routing/AsImpl.hpp"
+#include "src/kernel/routing/NetZoneImpl.hpp"
 /*
 #include <float.h>
 #include <vector>
 namespace simgrid {
 namespace kernel {
 namespace routing {
-XBT_PUBLIC_DATA(simgrid::xbt::signal<void(NetCard*)>) netcardCreatedCallbacks;
 
 /** @ingroup SURF_routing_interface
  * @brief Network cards are the vertices in the graph representing the network, used to compute paths between nodes.
  *
  * @details This represents a position in the network. One can route information between two netcards
  */
-class NetCard {
+class NetCard : public simgrid::xbt::Extendable<NetCard> {
+
 public:
-  enum class Type { Host, Router, As };
+  enum class Type { Host, Router, NetZone };
 
-  NetCard(std::string name, NetCard::Type componentType, AsImpl* containingAS)
-      : name_(name), componentType_(componentType), containingAS_(containingAS)
+  NetCard(std::string name, NetCard::Type componentType, NetZoneImpl* netzone_p)
+      : name_(name), componentType_(componentType), netzone_(netzone_p)
   {
-    if (containingAS != nullptr)
-      id_ = containingAS->addComponent(this);
-    simgrid::kernel::routing::netcardCreatedCallbacks(this);
+    if (netzone_p != nullptr)
+      id_ = netzone_p->addComponent(this);
+    simgrid::kernel::routing::NetCard::onCreation(this);
   }
   ~NetCard() = default;
 
@@ -41,21 +42,25 @@ public:
   unsigned int id() { return id_; }
   std::string name() { return name_; }
   const char* cname() { return name_.c_str(); }
-  // This is the AS in which I am
-  AsImpl* containingAS() { return containingAS_; }
+  /** @brief the NetZone in which this netcard is included */
+  NetZoneImpl* netzone() { return netzone_; }
 
-  bool isAS() { return componentType_ == Type::As; }
+  bool isNetZone() { return componentType_ == Type::NetZone; }
   bool isHost() { return componentType_ == Type::Host; }
   bool isRouter() { return componentType_ == Type::Router; }
 
+  static simgrid::xbt::signal<void(NetCard*)> onCreation;
+
 private:
   unsigned int id_;
   std::string name_;
   NetCard::Type componentType_;
-  AsImpl* containingAS_;
+  NetZoneImpl* netzone_;
 };
 }
 }
 }
 
+XBT_PUBLIC(sg_netcard_t) sg_netcard_by_name_or_null(const char* name);
+
 #endif /* KERNEL_ROUTING_NETCARD_HPP_ */