From 33bd148331a48a87a0d266822a2fd190ba9616b3 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Wed, 7 Jun 2017 17:30:36 +0200 Subject: [PATCH] create a NetZone::onCreation signal and use it from instr --- include/simgrid/s4u/NetZone.hpp | 1 + src/kernel/routing/NetZoneImpl.cpp | 2 +- src/s4u/s4u_netzone.cpp | 1 + src/surf/instr_routing.cpp | 15 +++++++++------ src/surf/sg_platf.cpp | 3 +-- src/surf/xml/platf_private.hpp | 1 - 6 files changed, 13 insertions(+), 10 deletions(-) diff --git a/include/simgrid/s4u/NetZone.hpp b/include/simgrid/s4u/NetZone.hpp index b0accf1e76..4dc88c3884 100644 --- a/include/simgrid/s4u/NetZone.hpp +++ b/include/simgrid/s4u/NetZone.hpp @@ -67,6 +67,7 @@ public: kernel::routing::NetPoint* gw_src, kernel::routing::NetPoint* gw_dst, std::vector* link_list)> onRouteCreation; + static simgrid::xbt::signal onCreation; protected: std::vector diff --git a/src/kernel/routing/NetZoneImpl.cpp b/src/kernel/routing/NetZoneImpl.cpp index dc21bfffa1..dc907922b4 100644 --- a/src/kernel/routing/NetZoneImpl.cpp +++ b/src/kernel/routing/NetZoneImpl.cpp @@ -58,7 +58,7 @@ simgrid::s4u::Host* NetZoneImpl::createHost(const char* name, std::vectorsetProperty(kv.first.c_str(), kv.second.c_str()); - simgrid::s4u::Host::onCreation(*res); + simgrid::s4u::Host::onCreation(*res); // notify the signal return res; } diff --git a/src/s4u/s4u_netzone.cpp b/src/s4u/s4u_netzone.cpp index f539136108..38863221b2 100644 --- a/src/s4u/s4u_netzone.cpp +++ b/src/s4u/s4u_netzone.cpp @@ -20,6 +20,7 @@ simgrid::xbt::signal* link_list)> NetZone::onRouteCreation; +simgrid::xbt::signal NetZone::onCreation; NetZone::NetZone(NetZone* father, const char* name) : father_(father), name_(xbt_strdup(name)) { diff --git a/src/surf/instr_routing.cpp b/src/surf/instr_routing.cpp index 2baf7b9d96..4f4902a0a9 100644 --- a/src/surf/instr_routing.cpp +++ b/src/surf/instr_routing.cpp @@ -162,9 +162,9 @@ static void recursiveGraphExtraction(simgrid::s4u::NetZone* netzone, container_t /* * Callbacks */ -void sg_instr_AS_begin(sg_platf_AS_cbarg_t AS) +static void sg_instr_AS_begin(simgrid::s4u::NetZone& netzone) { - const char*id = AS->id; + const char* id = netzone.name(); if (PJ_container_get_root() == nullptr){ PJ_container_alloc (); @@ -318,11 +318,14 @@ 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 (not TRACE_is_enabled() || not TRACE_needs_platform()) + if (not TRACE_is_enabled()) return; - simgrid::s4u::Link::onCreation.connect(instr_routing_parse_start_link); - simgrid::s4u::onPlatformCreated.connect(instr_routing_parse_end_platform); - simgrid::s4u::Host::onCreation.connect(sg_instr_new_host); + if (TRACE_needs_platform()) { + simgrid::s4u::Link::onCreation.connect(instr_routing_parse_start_link); + simgrid::s4u::onPlatformCreated.connect(instr_routing_parse_end_platform); + simgrid::s4u::Host::onCreation.connect(sg_instr_new_host); + } + simgrid::s4u::NetZone::onCreation.connect(sg_instr_AS_begin); } /* diff --git a/src/surf/sg_platf.cpp b/src/surf/sg_platf.cpp index 2e10ec0209..7eb25fc686 100644 --- a/src/surf/sg_platf.cpp +++ b/src/surf/sg_platf.cpp @@ -662,8 +662,7 @@ simgrid::s4u::NetZone* sg_platf_new_AS_begin(sg_platf_AS_cbarg_t AS) /* set the new current component of the tree */ current_routing = new_as; - if (TRACE_is_enabled()) - sg_instr_AS_begin(AS); + simgrid::s4u::NetZone::onCreation(*new_as); // notify the signal return new_as; } diff --git a/src/surf/xml/platf_private.hpp b/src/surf/xml/platf_private.hpp index 2bc61f3f77..9b353f6871 100644 --- a/src/surf/xml/platf_private.hpp +++ b/src/surf/xml/platf_private.hpp @@ -245,7 +245,6 @@ XBT_PUBLIC_DATA(int) surfxml_bufferstack_size; XBT_PUBLIC(void) routing_route_free(sg_platf_route_cbarg_t route); /********** Instr. **********/ -XBT_PRIVATE void sg_instr_AS_begin(sg_platf_AS_cbarg_t AS); XBT_PRIVATE void sg_instr_new_router(const char* name); XBT_PRIVATE void sg_instr_AS_end(); -- 2.20.1