//
// Copyright (C) 2008
// Fraunhofer Institute for Open Communication Systems (FOKUS)
-// Competence Center NETwork research (NET), St. Augustin, GERMANY
-// Stefan Bund <g0dil@berlios.de>
//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
+// The contents of this file are subject to the Fraunhofer FOKUS Public License
+// Version 1.0 (the "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+// http://senf.berlios.de/license.html
//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// The Fraunhofer FOKUS Public License Version 1.0 is based on,
+// but modifies the Mozilla Public License Version 1.1.
+// See the full license text for the amendments.
//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the
-// Free Software Foundation, Inc.,
-// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+// Software distributed under the License is distributed on an "AS IS" basis,
+// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+// for the specific language governing rights and limitations under the License.
+//
+// The Original Code is Fraunhofer FOKUS code.
+//
+// The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V.
+// (registered association), Hansastraße 27 c, 80686 Munich, Germany.
+// All Rights Reserved.
+//
+// Contributor(s):
+// Stefan Bund <g0dil@berlios.de>
/** \file
\brief Statistics non-inline non-template implementation */
#include <cstdlib>
#include <sstream>
#include <senf/Utils/Format.hh>
+#include <senf/Utils/Console/STLSupport.hh>
#include "StatisticsTargets.hh"
//#include "Statistics.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::StatisticsBase
prefix_ void senf::StatisticsBase::enter(unsigned n, float min, float avg, float max, float dev)
os << boost::format("%s%-5d%|15t| %12.5g %19.5g %12.5g\n")
% std::string(2*level,' ') % rank()
- % fmt::eng(min()).setw() % fmt::eng(avg(),dev()).setw() % fmt::eng(max()).setw();
+ % fmt::eng(min()).setw().showbase() % fmt::eng(avg(),dev()).setw().showbase() % fmt::eng(max()).setw().showbase();
{
OutputMap::const_iterator i (outputs_.begin());
OutputMap::const_iterator i_end (outputs_.end());
for (; i != i_end; ++i)
os << boost::format(" %3d %12.5g %19.5g %12.5g\n")
% i->second.n
- % fmt::eng(i->second.min).setw()
- % fmt::eng(i->second.avg, i->second.dev).setw()
- % fmt::eng(i->second.max).setw();
+ % fmt::eng(i->second.min).setw().showbase()
+ % fmt::eng(i->second.avg, i->second.dev).setw().showbase()
+ % fmt::eng(i->second.max).setw().showbase();
}
{
Children::const_iterator i (children_.begin());
}
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
+// 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()
#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"
"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
}
prefix_ void senf::Statistics::consoleList(std::ostream & os)
+ const
{
os << "RANK WIN MIN AVG MAX\n";
StatisticsBase::consoleList(0, os);
return "";
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::Collector
prefix_ void senf::Collector::enter(unsigned n, float min, float avg, float max, float dev)
return owner_->path() + "-" + senf::str(rank_);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Statistics.mpp"