X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;ds=sidebyside;f=include%2Fanna%2Fcore%2Foam%2FCounterManager.hpp;fp=include%2Fanna%2Fcore%2Foam%2FCounterManager.hpp;h=0000000000000000000000000000000000000000;hb=884501d2411bc4fdfafae65948262c959e068d7d;hp=e98b2538d5c91a235810b9e47418795f18cd2b4c;hpb=6dbe157ab584ccb81e9d3edc88fabc38c93c7f3e;p=anna.git diff --git a/include/anna/core/oam/CounterManager.hpp b/include/anna/core/oam/CounterManager.hpp deleted file mode 100644 index e98b253..0000000 --- a/include/anna/core/oam/CounterManager.hpp +++ /dev/null @@ -1,245 +0,0 @@ -// ANNA - Anna is Not 'N' Anymore -// -// (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo -// -// https://bitbucket.org/testillano/anna -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// 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 -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Authors: eduardo.ramos.testillano@gmail.com -// cisco.tierra@gmail.com - - -#ifndef anna_core_oam_CounterManager_hpp -#define anna_core_oam_CounterManager_hpp - -#include -#include - -#include - -#include -#include - -namespace anna { - -namespace xml { -class Node; -} - -namespace timex { -class Engine; -} - -namespace oam { - -class CounterScope; -class CounterRecorder; -class CounterSummarizer; -class Counter; - -/** - Gestor de contadores. - - Mantiene la lista de ambitos y contadores definidas en nuestra aplicacion. Ademas establece - el periodo de grabacion de los contadores modificados. - - El periodo de grabacion se iniciara cada vez que se incremente un contador. -*/ -class CounterManager : public Singleton { -public: - static const int MaxScope = 100; /**< Numero maximo de ambitos */ - - /** - Destructor. - */ - virtual ~CounterManager(); - - /** - * Devuelve el gestor de tiempos asociado al gestor de contadores. - * \return el gestor de tiempos asociado al gestor de contadores. - */ - timex::Engine* getEngine() throw() { return a_timeController; } - - /** - Establece el gestor de tiempos usado para establecer el periodo de grabacion - de contadores. - \param timeController Gestor de tiempos usado para establecer el periodo de - grabacion de contadores. - */ - void setEngine(timex::Engine* timeController) throw() { a_timeController = timeController; } - - /** - Establece la instancia de la clase encargada de grabar el fichero con la informacion - de los contadores. - \param counterRecorder Instancia encargada de grabar los contadores. - \warning Sera invocado automaticamente cuando se cumpla el periodo de grabacion indicado en - la configuracion de esta clase. - - */ - void setCounterRecorder(CounterRecorder* counterRecorder) throw() { a_counterRecorder = counterRecorder; } - - /** - Establece la instancia de la clase encargada de calcular los contadores acumulados o - expresados en funcion de algunos otros. - \param counterSummarizer Instancia encargada de calcular los contadores acumulados o - expresados en funcion de algunos otros. - \warning Sera invocado automaticamente cuando se cumpla el periodo de grabacion indicado en - la configuracion de esta clase. - - */ - void setCounterSummarizer(CounterSummarizer* counterSummarizer) throw() { a_counterSummarizer = counterSummarizer; } - - /** - Establece el periodo de grabacion de los contadores. Por defecto sera 600000 (10 minutos). - \param millisecond Periodo de grabacion de contadores expresado en milisegundos. - */ - void setRecordPeriod(const anna::Millisecond & millisecond) throw() { a_timer.setTimeout(millisecond); } - - /** - Operador de acceso. El ambito solicitado deberia estar creado mediate #create. - \param scope Indica el numero de ambito al que deseamos acceder. - \return El ambito de contadores. - */ - CounterScope& operator [](const int scope) throw(RuntimeException) { return find(scope); } - - /** - Operador de acceso. El ambito solicitado deberia estar creado mediate #create. - \param scope Indica el numero de ambito al que deseamos acceder. - \return El ambito de contadores. - */ - const CounterScope& operator [](const int scope) const throw(RuntimeException) { return find(scope); } - - /** - Crea un nuevo ambito de contadores. - \param scope Índice del ambito. Debera ser menor de MaxScope. - \param name Nombre logico del ambito. - \param reuse Reusa el ambito si ya fue creado o da excepcion (por defecto). - */ - CounterScope& create(const int scope, const char* name, bool reuse = false) throw(RuntimeException); - - /** - Crea un nuevo ambito de contadores. Creara el ambito 0. - \param name Nombre logico del ambito. - */ - CounterScope& create(const char* name) throw(RuntimeException) { return create(0, name); } - - /** - Devuelve el ambito de contadores asociado al numero recibido como parametro. - El ambito solicitado deberia estar creado mediate #create. - \param scope Indica el numero de ambito al que deseamos acceder. - \return El ambito de contadores. - */ - CounterScope& find(const int scope) throw(RuntimeException); - - /** - Devuelve el ambito de contadores asociado al numero recibido como parametro. - El ambito solicitado deberia estar creado mediate #create. - \param scope Indica el numero de ambito al que deseamos acceder. - \return El ambito de contadores. - */ - const CounterScope& find(const int scope) const throw(RuntimeException); - - /** - Vuelca los contadores modificados desde la ultima llamada a este metodo. - - \warning Si se ha establecido un anna::timex::Engine valido mediante la invocacion al - metodo #setEngine no seria necesario invocar a este metodo, ya que se invocara automaticamente - cuando se cumpla el periodo de grabacion establecido por la configuracion. - */ - void record() throw(RuntimeException); - - /** - * Devuelve la información relevante de esta instancia en un documento XML. - * \return la información relevante de esta instancia en un documento XML. - */ - xml::Node* asXML(xml::Node* parent) const throw(RuntimeException); - - /** - Incrementa la cuenta del contador identificador por (scope, counter) - El ambito solicitado deberia estar creado mediate #create, ademas el contador debera - estar creado mediante CounterScope::create. - \param scope Ámbito del contador. - \param counter Identificador del contador. - \param value Valor con el que incrementar el contador. - */ - static void count(const int scope, const int counter, const oam::Counter::type_t value = 1) throw(); - - /** - Incrementa la cuenta del contador identificador por (scope = 0, counter) - El ambito solicitado deberia estar creado mediate #create, ademas el contador debera - estar creado mediante CounterScope::create. - \param counter Identificador del contador. - */ - static void count(const int counter) { count(0, counter, 1); } - -private: - class Timer : public timex::Timer { - public: - Timer(CounterManager& counterManager) : - timex::Timer("anna::oam:CounterManager::Timer", Millisecond(600000)), - a_counterManager(counterManager) - {;} - - private: - CounterManager& a_counterManager; - void expire(timex::Engine *) throw(RuntimeException) { a_counterManager.record(); } - }; - - class RecordingGuard { - public: - RecordingGuard(CounterManager*); - ~RecordingGuard(); - private: - CounterManager* a_counterManager; - }; - - CounterScope* a_scopes [MaxScope]; - Timer a_timer; - timex::Engine* a_timeController; - CounterRecorder* a_counterRecorder; - CounterSummarizer* a_counterSummarizer; - bool a_recording; - - CounterManager(); - CounterManager(const CounterManager&); - void activateTimer() throw(RuntimeException); - - friend class Singleton ; - friend class Timer; - - friend class CounterScope; - // activateTimer - - friend class RecordingGuard; -}; - -} -} - -#endif -