1 // ANNA - Anna is Not Nothingness Anymore //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
9 #ifndef anna_diameter_comm_MessageStatistics_hpp
10 #define anna_diameter_comm_MessageStatistics_hpp
18 #include <anna/diameter/defines.hpp>
19 #include <anna/statistics/Accumulator.hpp>
33 class MessageStatistics {
36 MessageStatistics() {;}
37 ~MessageStatistics() {;}
39 struct ConceptType { enum _v { SentRequestProcessingTime, ReceivedMessageSize }; };
41 void initialize(const std::string &name) throw(anna::RuntimeException);
42 void process(const ConceptType::_v &conceptType, const anna::diameter::CommandId &cid, const double & value) throw(anna::RuntimeException);
43 anna::statistics::Accumulator *getAccumulator() const throw() { return a_accumulator; }
46 anna::statistics::Accumulator *a_accumulator;
47 typedef std::pair<anna::diameter::CommandId, ConceptType::_v> ConceptId;
48 typedef std::map<ConceptId, int /* engine concept id */> concepts_map_t;
49 typedef std::map<ConceptId, int /* engine concept id */>::const_iterator concepts_map_it;
50 concepts_map_t a_concepts;