A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add more Mc Mini tests
[simgrid.git]
/
src
/
instr
/
instr_paje_containers.cpp
diff --git
a/src/instr/instr_paje_containers.cpp
b/src/instr/instr_paje_containers.cpp
index 0680d8c9d3e9eff242949d9d63af588f2c525122..5ebe79a08a8ca84c333d6e371dee73cd8ad9cf66 100644
(file)
--- a/
src/instr/instr_paje_containers.cpp
+++ b/
src/instr/instr_paje_containers.cpp
@@
-1,4
+1,4
@@
-/* Copyright (c) 2010-202
0
. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2010-202
3
. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
@@
-10,73
+10,61
@@
XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_paje_containers, instr, "Paje tracing event system (containers)");
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<std::string, container_t> allContainers; /* all created containers indexed by name */
+namespace simgrid::instr {
-long long int instr_new_paje_id ()
-{
- static long long int type_id = 0;
- return type_id++;
-}
-
-namespace simgrid {
-namespace instr {
-
-Container* Container::get_root()
-{
- return rootContainer;
-}
+Container* Container::root_container_ = nullptr; /* the root container */
+std::map<std::string, Container*, std::less<>> Container::all_containers_; /* all created containers indexed by name */
-NetZoneContainer::NetZoneContainer(const std::string& name, unsigned int level, NetZoneContainer*
father
)
- : Container::Container(name, "",
father
)
+NetZoneContainer::NetZoneContainer(const std::string& name, unsigned int level, NetZoneContainer*
parent
)
+ : Container::Container(name, "",
parent
)
{
xbt_assert(s4u::Engine::get_instance()->netpoint_by_name_or_null(get_name()), "Element '%s' not found", get_cname());
{
xbt_assert(s4u::Engine::get_instance()->netpoint_by_name_or_null(get_name()), "Element '%s' not found", get_cname());
- if (
father
_) {
- std::string type_name =
std::string("L")
+ std::to_string(level);
- type_ =
father
_->type_->by_name_or_create<ContainerType>(type_name);
-
father_->children_.insert({get_name(), this}
);
+ if (
parent
_) {
+ std::string type_name =
"L"
+ std::to_string(level);
+ type_ =
parent
_->type_->by_name_or_create<ContainerType>(type_name);
+
parent_->children_.try_emplace(get_name(), this
);
on_creation(*this);
} else {
type_ = new ContainerType("0");
on_creation(*this);
} else {
type_ = new ContainerType("0");
-
rootContainer = this
;
+
set_root(this)
;
}
}
}
}
-RouterContainer::RouterContainer(const std::string& name, Container*
father
)
- : Container::Container(name, "ROUTER",
father
)
+RouterContainer::RouterContainer(const std::string& name, Container*
parent
)
+ : Container::Container(name, "ROUTER",
parent
)
{
{
- xbt_assert(
father, "Only the Root container has no father
");
+ xbt_assert(
parent, "Only the Root container has no parent
");
xbt_assert(s4u::Engine::get_instance()->netpoint_by_name_or_null(get_name()), "Element '%s' not found", get_cname());
}
xbt_assert(s4u::Engine::get_instance()->netpoint_by_name_or_null(get_name()), "Element '%s' not found", get_cname());
}
-HostContainer::HostContainer(s4u::Host const& host, NetZoneContainer*
father
)
- : Container::Container(host.get_name(), "HOST",
father
)
+HostContainer::HostContainer(s4u::Host const& host, NetZoneContainer*
parent
)
+ : Container::Container(host.get_name(), "HOST",
parent
)
{
{
- xbt_assert(
father, "Only the Root container has no father
");
+ xbt_assert(
parent, "Only the Root container has no parent
");
xbt_assert(host.get_netpoint(), "Element '%s' not found", host.get_cname());
}
xbt_assert(host.get_netpoint(), "Element '%s' not found", host.get_cname());
}
-Container::Container(const std::string& name, const std::string& type_name, Container*
father
)
- : name_(name),
father_(father
)
+Container::Container(const std::string& name, const std::string& type_name, Container*
parent
)
+ : name_(name),
parent_(parent
)
{
static long long int container_id = 0;
id_ = container_id; // id (or alias) of the container
container_id++;
{
static long long int container_id = 0;
id_ = container_id; // id (or alias) of the container
container_id++;
- if (
father
_) {
- XBT_DEBUG("new container %s, child of %s", get_cname(),
father
->get_cname());
+ if (
parent
_) {
+ XBT_DEBUG("new container %s, child of %s", get_cname(),
parent
->get_cname());
if (not type_name.empty()) {
if (not type_name.empty()) {
- type_ =
father
_->type_->by_name_or_create<ContainerType>(type_name);
-
father_->children_.insert({name_, this}
);
+ type_ =
parent
_->type_->by_name_or_create<ContainerType>(type_name);
+
parent_->children_.try_emplace(name_, this
);
on_creation(*this);
}
}
//register all kinds by name
on_creation(*this);
}
}
//register all kinds by name
- if (not all
Containers.
emplace(name_, this).second)
+ if (not all
_containers_.try_
emplace(name_, this).second)
throw TracingError(XBT_THROW_POINT,
throw TracingError(XBT_THROW_POINT,
- xbt::string_printf("container %s already present in all
Containers data structure
", get_cname()));
+ xbt::string_printf("container %s already present in all
_containers_
", get_cname()));
XBT_DEBUG("Add container name '%s'", get_cname());
}
XBT_DEBUG("Add container name '%s'", get_cname());
}
@@
-85,11
+73,15
@@
Container::~Container()
{
XBT_DEBUG("destroy container %s", get_cname());
// Begin with destroying my own children
{
XBT_DEBUG("destroy container %s", get_cname());
// Begin with destroying my own children
- for (auto c
hild
: children_)
- delete child
.second
;
+ for (auto c
onst& [_, child]
: children_)
+ delete child;
- // 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 = simgrid_get_clock();
+ dump_buffer(true);
on_destruction(*this);
}
on_destruction(*this);
}
@@
-101,8
+93,8
@@
void Container::create_child(const std::string& name, const std::string& type_na
Container* Container::by_name_or_null(const std::string& name)
{
Container* Container::by_name_or_null(const std::string& name)
{
- auto cont = all
Containers
.find(name);
- return cont == all
Containers
.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)
}
Container* Container::by_name(const std::string& name)
@@
-115,9
+107,9
@@
Container* Container::by_name(const std::string& name)
void Container::remove_from_parent()
{
void Container::remove_from_parent()
{
- if (
father
_) {
- XBT_DEBUG("removeChildContainer (%s) FromContainer (%s) ", get_cname(),
father
_->get_cname());
-
father
_->children_.erase(name_);
+ if (
parent
_) {
+ XBT_DEBUG("removeChildContainer (%s) FromContainer (%s) ", get_cname(),
parent
_->get_cname());
+
parent
_->children_.erase(name_);
}
delete this;
}
}
delete this;
}
@@
-136,5
+128,11
@@
VariableType* Container::get_variable(const std::string& name)
{
return static_cast<VariableType*>(type_->by_name(name)->set_calling_container(this));
}
{
return static_cast<VariableType*>(type_->by_name(name)->set_calling_container(this));
}
-} // namespace instr
-} // namespace simgrid
+
+EntityValue::EntityValue(const std::string& name, const std::string& color, Type* parent)
+ : name_(name), color_(color), parent_(parent)
+{
+ on_creation(*this);
+}
+
+} // namespace simgrid::instr