#include "src/instr/instr_private.h" // TRACE_is_enabled(). FIXME: remove by subscribing tracing to the surf signals
#include "simgrid/s4u/As.hpp"
+#include "simgrid/s4u/engine.hpp"
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(ns3, surf, "Logging specific to the SURF network NS3 module");
static void ns3_add_netcard(simgrid::kernel::routing::NetCard* netcard)
{
- xbt_lib_set(as_router_lib, netcard->name(), NS3_ASR_LEVEL, new HostNs3());
+ xbt_lib_set(as_router_lib, netcard->name().c_str(), NS3_ASR_LEVEL, new HostNs3());
}
#include "src/surf/xml/platf.hpp" // FIXME: move that back to the parsing area
for (int i : *cluster->radicals) {
char* router_id = bprintf("router_%s%d%s", cluster->prefix, i, cluster->suffix);
- simgrid::s4u::Host* router = simgrid::s4u::Host::by_name_or_create(router_id);
+ simgrid::s4u::Host* router = new simgrid::s4u::Host(router_id);
ns3_add_host(*router);
// Create private link
xbt_dynar_shrink(IPV4addr,0);
//get the onelinks from the parsed platform
- xbt_dynar_t onelink_routes = routing_platf->getOneLinkRoutes();
+ std::vector<simgrid::kernel::routing::Onelink*> onelink_routes;
+ static_cast<simgrid::kernel::routing::AsImpl*>(simgrid::s4u::Engine::instance()->rootAs())
+ ->getOneLinkRoutes(&onelink_routes);
std::unordered_set<simgrid::surf::LinkNS3*> already_seen = std::unordered_set<simgrid::surf::LinkNS3*>();
- XBT_DEBUG("There is %ld one-link routes",onelink_routes->used);
- simgrid::kernel::routing::Onelink *onelink;
- unsigned int iter;
- xbt_dynar_foreach(onelink_routes, iter, onelink) {
- char *src = onelink->src_->name();
- char *dst = onelink->dst_->name();
+ XBT_DEBUG("There is %ld one-link routes", onelink_routes.size());
+ for (simgrid::kernel::routing::Onelink* onelink : onelink_routes) {
+ const char* src = onelink->src_->name().c_str();
+ const char* dst = onelink->dst_->name().c_str();
simgrid::surf::LinkNS3 *link = static_cast<simgrid::surf::LinkNS3 *>(onelink->link_);
if (strcmp(src,dst) && (already_seen.find(link) == already_seen.end())) {
NetworkNS3Model::NetworkNS3Model() : NetworkModel() {
ns3_initialize(ns3_tcp_model.get().c_str());
- routing_model_create(nullptr);
simgrid::s4u::Host::onCreation.connect(ns3_add_host);
simgrid::kernel::routing::netcardCreatedCallbacks.connect(ns3_add_netcard);
simgrid::surf::on_cluster.connect (&parse_ns3_add_cluster);
xbt_dict_free(&flowFromSock);
}
-Link* NetworkNS3Model::createLink(const char *name, double bandwidth, double latency, e_surf_link_sharing_policy_t policy,
- xbt_dict_t properties){
-
- return new LinkNS3(this, name, properties, bandwidth, latency);
+Link* NetworkNS3Model::createLink(const char* name, double bandwidth, double latency,
+ e_surf_link_sharing_policy_t policy)
+{
+ return new LinkNS3(this, name, bandwidth, latency);
}
Action* NetworkNS3Model::communicate(s4u::Host* src, s4u::Host* dst, double size, double rate)
* Resource *
************/
-LinkNS3::LinkNS3(NetworkNS3Model *model, const char *name, xbt_dict_t props, double bandwidth, double latency)
- : Link(model, name, props)
+LinkNS3::LinkNS3(NetworkNS3Model* model, const char* name, double bandwidth, double latency)
+ : Link(model, name, nullptr)
{
bandwidth_.peak = bandwidth;
latency_.peak = latency;