From 2fe78f8bc84b3da9ec09542499edeb2189227f61 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Wed, 21 Dec 2016 23:02:36 +0100 Subject: [PATCH] have only one callback for link creation --- src/surf/instr_routing.cpp | 56 ++++++++++++++-------------------- src/surf/sg_platf.cpp | 4 --- src/surf/xml/platf_private.hpp | 1 - 3 files changed, 23 insertions(+), 38 deletions(-) diff --git a/src/surf/instr_routing.cpp b/src/surf/instr_routing.cpp index a071a3c225..2eb79f75d5 100644 --- a/src/surf/instr_routing.cpp +++ b/src/surf/instr_routing.cpp @@ -9,6 +9,7 @@ #include "simgrid/s4u/engine.hpp" #include "simgrid/s4u/host.hpp" #include "src/kernel/routing/NetZoneImpl.hpp" +#include "src/surf/network_interface.hpp" #include "src/surf/xml/platf_private.hpp" #include "surf/surf.h" #include "xbt/graph.h" @@ -204,44 +205,33 @@ void sg_instr_AS_end() } } -static void instr_routing_parse_start_link (sg_platf_link_cbarg_t link) +static void instr_routing_parse_start_link(simgrid::surf::Link* link) { + if (currentContainer.empty()) // No ongoing parsing. Are you creating the loopback? + return; container_t father = currentContainer.back(); - double bandwidth_value = link->bandwidth; - double latency_value = link->latency; - std::vector links_to_create; - - if (link->policy == SURF_LINK_FULLDUPLEX){ - std::string id (link->id); - std::string up = id + "_UP"; - std::string down = id + "_DOWN"; - links_to_create.push_back(up); - links_to_create.push_back(down); - }else{ - links_to_create.push_back(link->id); - } + double bandwidth_value = link->bandwidth(); + double latency_value = link->latency(); - for (auto link_name: links_to_create){ - container_t container = PJ_container_new (link_name.c_str(), INSTR_LINK, father); + container_t container = PJ_container_new(link->getName(), INSTR_LINK, father); - if ((TRACE_categorized() || TRACE_uncategorized() || TRACE_platform()) && (! TRACE_disable_link())) { - type_t bandwidth = PJ_type_get_or_null ("bandwidth", container->type); - if (bandwidth == nullptr){ - bandwidth = PJ_type_variable_new ("bandwidth", nullptr, container->type); - } - type_t latency = PJ_type_get_or_null ("latency", container->type); - if (latency == nullptr){ - latency = PJ_type_variable_new ("latency", nullptr, container->type); - } - new_pajeSetVariable (0, container, bandwidth, bandwidth_value); - new_pajeSetVariable (0, container, latency, latency_value); + if ((TRACE_categorized() || TRACE_uncategorized() || TRACE_platform()) && (! TRACE_disable_link())) { + type_t bandwidth = PJ_type_get_or_null("bandwidth", container->type); + if (bandwidth == nullptr) { + bandwidth = PJ_type_variable_new("bandwidth", nullptr, container->type); } - if (TRACE_uncategorized()){ - type_t bandwidth_used = PJ_type_get_or_null ("bandwidth_used", container->type); - if (bandwidth_used == nullptr){ - PJ_type_variable_new ("bandwidth_used", "0.5 0.5 0.5", container->type); - } + type_t latency = PJ_type_get_or_null("latency", container->type); + if (latency == nullptr) { + latency = PJ_type_variable_new("latency", nullptr, container->type); + } + new_pajeSetVariable(0, container, bandwidth, bandwidth_value); + new_pajeSetVariable(0, container, latency, latency_value); + } + if (TRACE_uncategorized()) { + type_t bandwidth_used = PJ_type_get_or_null("bandwidth_used", container->type); + if (bandwidth_used == nullptr) { + PJ_type_variable_new("bandwidth_used", "0.5 0.5 0.5", container->type); } } } @@ -331,7 +321,7 @@ void instr_routing_define_callbacks () //always need the call backs to ASes (we need only the root AS), //to create the rootContainer and the rootType properly if (!TRACE_needs_platform()) return; - simgrid::surf::on_link.connect(instr_routing_parse_start_link); + simgrid::surf::Link::onCreation.connect(instr_routing_parse_start_link); simgrid::surf::on_postparse.connect(instr_routing_parse_end_platform); } diff --git a/src/surf/sg_platf.cpp b/src/surf/sg_platf.cpp index 472eaad5b7..577dab355c 100644 --- a/src/surf/sg_platf.cpp +++ b/src/surf/sg_platf.cpp @@ -33,7 +33,6 @@ XBT_PRIVATE xbt_dynar_t mount_list = nullptr; namespace simgrid { namespace surf { -simgrid::xbt::signal on_link; simgrid::xbt::signal on_cluster; simgrid::xbt::signal on_postparse; @@ -55,7 +54,6 @@ void sg_platf_init() { /** Module management function: frees all internal data structures */ void sg_platf_exit() { - simgrid::surf::on_link.disconnect_all_slots(); simgrid::surf::on_cluster.disconnect_all_slots(); simgrid::surf::on_postparse.disconnect_all_slots(); @@ -151,8 +149,6 @@ void sg_platf_new_link(sg_platf_link_cbarg_t link){ xbt_free(link_name); } - - simgrid::surf::on_link(link); } void sg_platf_new_cluster(sg_platf_cluster_cbarg_t cluster) diff --git a/src/surf/xml/platf_private.hpp b/src/surf/xml/platf_private.hpp index add8c25bef..171c67fa0f 100644 --- a/src/surf/xml/platf_private.hpp +++ b/src/surf/xml/platf_private.hpp @@ -254,7 +254,6 @@ SG_END_DECL() namespace simgrid { namespace surf { -extern XBT_PRIVATE simgrid::xbt::signal on_link; extern XBT_PRIVATE simgrid::xbt::signal on_cluster; } -- 2.20.1