Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
use signals for instr::EntityValue display
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Fri, 27 Mar 2020 10:35:11 +0000 (11:35 +0100)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Fri, 27 Mar 2020 10:35:11 +0000 (11:35 +0100)
src/instr/instr_config.cpp
src/instr/instr_paje_types.cpp
src/instr/instr_paje_values.cpp
src/instr/instr_paje_values.hpp

index 667dc2a..135b2d2 100644 (file)
@@ -239,6 +239,7 @@ static bool trace_active = false;
  *************/
 xbt::signal<void(Container&)> Container::on_creation;
 xbt::signal<void(Container&)> Container::on_destruction;
+xbt::signal<void(EntityValue&)> EntityValue::on_creation;
 
 static void on_container_creation_paje(Container& c)
 {
@@ -321,6 +322,18 @@ static void on_container_destruction_ti(Container& c)
   }
 }
 
+static void on_entity_value_creation(EntityValue& value)
+{
+  std::stringstream stream;
+  XBT_DEBUG("%s: event_type=%u", __func__, PAJE_DefineEntityValue);
+  stream << std::fixed << std::setprecision(TRACE_precision()) << PAJE_DefineEntityValue;
+  stream << " " << value.get_id() << " " << value.get_father()->get_id() << " " << value.get_name();
+  if (not value.get_color().empty())
+    stream << " \"" << value.get_color() << "\"";
+  XBT_DEBUG("Dump %s", stream.str().c_str());
+  tracing_file << stream.str() << std::endl;
+}
+
 static void on_simulation_start()
 {
   if (trace_active)
@@ -342,6 +355,7 @@ static void on_simulation_start()
     if (format == "Paje") {
       Container::on_creation.connect(on_container_creation_paje);
       Container::on_destruction.connect(on_container_destruction_paje);
+      EntityValue::on_creation.connect(on_entity_value_creation);
     } else {
       Container::on_creation.connect(on_container_creation_ti);
       Container::on_destruction.connect(on_container_destruction_ti);
index 90fe739..b1e388e 100644 (file)
@@ -188,9 +188,8 @@ void ValueType::add_entity_value(const std::string& name, const std::string& col
 
   auto it = values_.find(name);
   if (it == values_.end()) {
-    auto res = values_.emplace(name, EntityValue(name, color, this));
     XBT_DEBUG("new value %s, child of %s", name.c_str(), get_cname());
-    res.first->second.print();
+    values_.emplace(name, EntityValue(name, color, this));
   }
 }
 
index 0329d74..5f2bcd4 100644 (file)
@@ -7,27 +7,14 @@
 #include "src/instr/instr_private.hpp"
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_paje_values, instr, "Paje tracing event system (values)");
-extern std::ofstream tracing_file;
 
 namespace simgrid {
 namespace instr {
 
 EntityValue::EntityValue(const std::string& name, const std::string& color, Type* father)
-    : id_(instr_new_paje_id()), name_(name), color_(color), father_(father){}
-
-void EntityValue::print()
+    : id_(instr_new_paje_id()), name_(name), color_(color), father_(father)
 {
-  if (trace_format != simgrid::instr::TraceFormat::Paje)
-    return;
-  std::stringstream stream;
-  XBT_DEBUG("%s: event_type=%u", __func__, PAJE_DefineEntityValue);
-  stream << std::fixed << std::setprecision(TRACE_precision()) << PAJE_DefineEntityValue;
-  stream << " " << id_ << " " << father_->get_id() << " " << name_;
-  if (not color_.empty())
-    stream << " \"" << color_ << "\"";
-  XBT_DEBUG("Dump %s", stream.str().c_str());
-  tracing_file << stream.str() << std::endl;
+  on_creation(*this);
 }
-
 } // namespace instr
 } // namespace simgrid
index e78ac61..cec347f 100644 (file)
@@ -19,12 +19,16 @@ class EntityValue {
   Type* father_;
 
 public:
+  static xbt::signal<void(EntityValue&)> on_creation;
   explicit EntityValue(const std::string& name, const std::string& color, Type* father);
-  const char* get_cname() { return name_.c_str(); }
-  long long int get_id() { return id_; }
-  void print();
+
+  long long int get_id() const { return id_; }
+  std::string get_name() const { return name_; }
+  const char* get_cname() const { return name_.c_str(); }
+  std::string get_color() const { return color_; }
+  Type* get_father() const { return father_; }
 };
-}
-}
+} // namespace instr
+} // namespace simgrid
 
 #endif