#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;
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_ */