--- /dev/null
+// ANNA - Anna is Not Nothingness Anymore //
+// //
+// (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
+// //
+// See project site at http://redmine.teslayout.com/projects/anna-suite //
+// See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
+
+
+#ifndef anna_diameter_comm_MessageStatistics_hpp
+#define anna_diameter_comm_MessageStatistics_hpp
+
+// Standard
+#include <algorithm>
+#include <string>
+#include <map>
+
+// Project
+#include <anna/diameter/defines.hpp>
+#include <anna/statistics/Accumulator.hpp>
+
+namespace anna {
+
+namespace xml {
+ class Node;
+}
+
+namespace diameter {
+
+namespace comm {
+
+
+
+class MessageStatistics {
+
+ public:
+ MessageStatistics() {;}
+ ~MessageStatistics() {;}
+
+ struct ConceptType { enum _v { SentRequestProcessingTime, ReceivedMessageSize }; };
+
+ void initialize(const std::string &name) throw(anna::RuntimeException);
+ void process(const ConceptType::_v &conceptType, const anna::diameter::CommandId &cid, const double & value) throw(anna::RuntimeException);
+ anna::statistics::Accumulator *getAccumulator() const throw() { return a_accumulator; }
+
+ private:
+ anna::statistics::Accumulator *a_accumulator;
+ typedef std::pair<anna::diameter::CommandId, ConceptType::_v> ConceptId;
+ typedef std::map<ConceptId, int /* engine concept id */> concepts_map_t;
+ typedef std::map<ConceptId, int /* engine concept id */>::const_iterator concepts_map_it;
+ concepts_map_t a_concepts;
+};
+
+}
+}
+}
+
+#endif