X-Git-Url: https://git.teslayout.com/public/public/public/?p=anna.git;a=blobdiff_plain;f=source%2Fdiameter.comm%2FMessageStatistics.cpp;fp=source%2Fdiameter.comm%2FMessageStatistics.cpp;h=00ba91aac3d26b3804f8c4119a8d1175101c832b;hp=0000000000000000000000000000000000000000;hb=028006fc5ee34967fcfffff24a2b1c8b410c26c3;hpb=3b71d6454d211ec50c2f3e04b04c607c382f2f29 diff --git a/source/diameter.comm/MessageStatistics.cpp b/source/diameter.comm/MessageStatistics.cpp new file mode 100644 index 0000000..00ba91a --- /dev/null +++ b/source/diameter.comm/MessageStatistics.cpp @@ -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 // + +// Standard +#include + +// Project +#include +#include +#include +#include +#include +#include +#include + + +void anna::diameter::comm::MessageStatistics::initialize(const std::string &name) throw(anna::RuntimeException) { + a_accumulator = anna::statistics::Engine::instantiate().createAccumulator(name); +} + + +void anna::diameter::comm::MessageStatistics::process(const ConceptType::_v &conceptType, const anna::diameter::CommandId &cid, const double & value) throw(anna::RuntimeException) { + + // Development issue: +// if (!a_accumulator) { +// LOGWARNING(anna::Logger::warning("Cannot process uninitialized 'MessageStatistics' instance", ANNA_FILE_LOCATION)); +// return; +// } + + // retrieve the concept id for the pair: + ConceptId conceptId(cid, conceptType); + int engine_concept_id = 0; + concepts_map_it it = a_concepts.find(conceptId); + if (it != a_concepts.end()) { // found + engine_concept_id = it->second; + } + else { // register a new concept id + std::string description; + if(conceptType == ConceptType::SentRequestProcessingTime) { + description = anna::functions::asString("Processing time for outgoing requests (code = %d)", cid.first); + } + else if (conceptType == ConceptType::ReceivedMessageSize) { + description = "Message size for received messages "; + description += anna::diameter::functions::commandIdAsPairString(cid); + } + + engine_concept_id = a_accumulator->addConcept(description, "ms", true/* integer values */); + a_concepts[conceptId] = engine_concept_id; + } + + a_accumulator->process(engine_concept_id, value); +} +