Packets: extended description of bad_cast exception in Packet.as()
[senf.git] / senf / Utils / Statistics.cc
index 10f603e..5175388 100644 (file)
@@ -35,9 +35,9 @@
 
 //#include "Statistics.mpp"
 #define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // senf::StatisticsBase
 
 prefix_ void senf::StatisticsBase::enter(unsigned n, float min, float avg, float max, float dev)
@@ -62,6 +62,15 @@ prefix_ senf::Collector & senf::StatisticsBase::operator[](unsigned rank)
     return i->second;
 }
 
+prefix_ senf::Collector const & senf::StatisticsBase::operator[](unsigned rank)
+    const
+{
+    Children::const_iterator i (children_.find(rank));
+    if (i == children_.end())
+        throw InvalidRankException();
+    return i->second;
+}
+
 prefix_ senf::Collector & senf::StatisticsBase::collect(unsigned rank)
 {
     std::pair<Children::iterator, bool> state (
@@ -140,7 +149,18 @@ prefix_ void senf::StatisticsBase::generateOutput()
     }
 }
 
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
+// senf::StatisticsBase::OutputEntry
+
+prefix_ void senf::StatisticsBase::OutputEntry::consoleList(std::ostream & os)
+{
+    for (boost::ptr_vector<TargetBase>::iterator i (targets_.begin());
+         i != targets_.end(); ++i)
+        if (! i->label.empty())
+            os << i->label << "\n";
+}
+
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // senf::Statistics
 
 prefix_ senf::Statistics::Statistics()
@@ -149,7 +169,7 @@ prefix_ senf::Statistics::Statistics()
 #endif
 {
 #ifndef SENF_DISABLE_CONSOLE
-    namespace fty = senf::console::factory;
+    namespace fty = console::factory;
 
     dir.add("list", fty::Command(&Statistics::consoleList, this)
             .doc("List statistics collection intervals and current values.\n"
@@ -202,7 +222,7 @@ prefix_ senf::Statistics::Statistics()
                  "the last 5 minutes.")
             .arg("rank","Rank chain selecting the value to generate output for")
             .arg("window","Optional size of sliding average window",
-                 senf::console::kw::default_value = 1u) );
+                 console::kw::default_value = 1u) );
 #endif
 }
 
@@ -259,7 +279,7 @@ prefix_ std::string senf::Statistics::v_path()
     return "";
 }
 
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 // senf::Collector
 
 prefix_ void senf::Collector::enter(unsigned n, float min, float avg, float max, float dev)
@@ -307,7 +327,7 @@ prefix_ std::string senf::Collector::v_path()
     return owner_->path() + "-" + senf::str(rank_);
 }
 
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 #undef prefix_
 //#include "Statistics.mpp"