Message statistics
[anna.git] / include / anna / diameter.comm / MessageStatistics.hpp
diff --git a/include/anna/diameter.comm/MessageStatistics.hpp b/include/anna/diameter.comm/MessageStatistics.hpp
new file mode 100644 (file)
index 0000000..9c502e2
--- /dev/null
@@ -0,0 +1,57 @@
+// 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