X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4929b7f325bed62b338613c63af15c75a185effe..db5adf7439201fb67d1d697b86806d58ace9fe85:/src/instr/instr_paje_containers.cpp diff --git a/src/instr/instr_paje_containers.cpp b/src/instr/instr_paje_containers.cpp index 9e5169fafd..ce918634bc 100644 --- a/src/instr/instr_paje_containers.cpp +++ b/src/instr/instr_paje_containers.cpp @@ -10,23 +10,18 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_paje_containers, instr, "Paje tracing event system (containers)"); -static container_t rootContainer = nullptr; /* the root container */ -static std::map allContainers; /* all created containers indexed by name */ - namespace simgrid { namespace instr { +Container* Container::root_container_ = nullptr; /* the root container */ +std::map Container::all_containers_; /* all created containers indexed by name */ + long long int new_paje_id() { static long long int type_id = 0; return type_id++; } -Container* Container::get_root() -{ - return rootContainer; -} - NetZoneContainer::NetZoneContainer(const std::string& name, unsigned int level, NetZoneContainer* father) : Container::Container(name, "", father) { @@ -38,7 +33,7 @@ NetZoneContainer::NetZoneContainer(const std::string& name, unsigned int level, on_creation(*this); } else { type_ = new ContainerType("0"); - rootContainer = this; + set_root(this); } } @@ -74,9 +69,9 @@ Container::Container(const std::string& name, const std::string& type_name, Cont } //register all kinds by name - if (not allContainers.emplace(name_, this).second) + if (not all_containers_.emplace(name_, this).second) throw TracingError(XBT_THROW_POINT, - xbt::string_printf("container %s already present in allContainers data structure", get_cname())); + xbt::string_printf("container %s already present in all_containers_", get_cname())); XBT_DEBUG("Add container name '%s'", get_cname()); } @@ -88,8 +83,12 @@ Container::~Container() for (auto child : children_) delete child.second; - // remove me from the allContainers data structure - allContainers.erase(name_); + // remove me from the all_containers_ data structure + all_containers_.erase(name_); + + // obligation to dump previous events because they might reference the container that is about to be destroyed + last_timestamp_to_dump = SIMIX_get_clock(); + dump_buffer(true); on_destruction(*this); } @@ -101,8 +100,8 @@ void Container::create_child(const std::string& name, const std::string& type_na Container* Container::by_name_or_null(const std::string& name) { - auto cont = allContainers.find(name); - return cont == allContainers.end() ? nullptr : cont->second; + auto cont = all_containers_.find(name); + return cont == all_containers_.end() ? nullptr : cont->second; } Container* Container::by_name(const std::string& name)