X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=include%2Fanna%2Fcore%2Foam%2FModule.hpp;h=032c3a3ddea506c3c19edeb28de72c7c7439c9db;hb=5256cb543a9d35b610df19bd227cde977186aef0;hp=ccc5ab919ea9d649dd8802f9d400b754f2595110;hpb=4e12ac57e93c052f716a6305ad8fc099c45899d1;p=anna.git diff --git a/include/anna/core/oam/Module.hpp b/include/anna/core/oam/Module.hpp index ccc5ab9..032c3a3 100644 --- a/include/anna/core/oam/Module.hpp +++ b/include/anna/core/oam/Module.hpp @@ -1,8 +1,8 @@ -// ANNA - Anna is Not 'N' Anymore +// ANNA - Anna is Not Nothingness Anymore // // (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo // -// https://bitbucket.org/testillano/anna +// http://redmine.teslayout.com/projects/anna-suite // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions @@ -14,7 +14,7 @@ // copyright notice, this list of conditions and the following disclaimer // in the documentation and/or other materials provided with the // distribution. -// * Neither the name of Google Inc. nor the names of its +// * Neither the name of the copyright holder nor the names of its // contributors may be used to endorse or promote products derived from // this software without specific prior written permission. // @@ -48,6 +48,8 @@ #include #include +#include + namespace anna { namespace xml { @@ -55,6 +57,7 @@ class Node; } namespace oam { class CounterScope; +class CounterRecorder; } } @@ -204,7 +207,16 @@ class Module { counter_iterator counter_find(const int &key) throw() { return a_counters.find(key); } counter_iterator counter_begin() throw() { return a_counters.begin(); } counter_iterator counter_end() throw() { return a_counters.end(); } + CounterRecorder* a_counterRecorder; + bool a_counterRecording; + class RecordingGuard { + public: + RecordingGuard(Module*); + ~RecordingGuard(); + private: + Module *a_module; + }; // Alarms typedef alarm_container::iterator alarm_iterator; @@ -221,21 +233,25 @@ class Module { public: + static const int MaxScope = 100; /**< Numero maximo de ambitos */ + + /** Constructor @param className Logical name for the class (better use fullNaming format including namespace resolution) */ Module(const std::string &className) : a_className(className), a_handler(&a_defaultHandler), a_counters_enabled(true), + a_counterRecorder(NULL), + a_counterRecording(false), a_alarms_enabled(true), a_alarms_preffix_enabled(true), a_alarms_suffix_enabled(true) {;} - /** * Destructor */ - virtual ~Module() {;} + virtual ~Module(); /** @@ -433,6 +449,22 @@ public: int resetCounters(const int & scopeId = -1) throw(); + /** + * Sets the instance for the class which will save the counters information. + * @counterRecorder Provided instance + * @warning It should be invoked periodically as a common solution + */ + void setCounterRecorder(CounterRecorder* counterRecorder) throw() { a_counterRecorder = counterRecorder; } + + /** + * Dumps the modified counters from last invocation to this method. + * A counter recorder should have been assigned by mean setCounterRecorder(), which + * will have the specific behaviour. This procedure is oriented to have physical storage + * for counters information. + */ + void recordCounters() throw(anna::RuntimeException); + + /** * Activates alarm with dynamic-composed text parsed with provided data (...). * Used at MODULE implementation (library or proccess itself) @@ -440,7 +472,7 @@ public: * @param alarmType Alarm enum-identification within the own context/module * @param ... Optional parsing data for dynamic-composed text. */ - void activateAlarm(const int & type, ...) const throw(anna::RuntimeException); + void activateAlarm(int type, ...) const throw(anna::RuntimeException); /** @@ -450,7 +482,7 @@ public: * @param alarmType Alarm enum-identification within the own context/module * @param ... Optional parsing data for dynamic-composed text. */ - void cancelAlarm(const int & type, ...) const throw(anna::RuntimeException); + void cancelAlarm(int type, ...) const throw(anna::RuntimeException); /** @@ -497,6 +529,9 @@ protected: * @param components Alarm suffix components defined by oam module. Empty on default implementation. */ virtual void readAlarmSuffixComponents(std::vector & components) const throw() {;} + + + friend class RecordingGuard; }; }