Usage of stdint.h types
[anna.git] / include / anna / core / oam / CounterRecorder.hpp
1 // ANNA - Anna is Not Nothingness Anymore                                                         //
2 //                                                                                                //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo                         //
4 //                                                                                                //
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 //
7
8
9 #ifndef anna_core_oam_CounterRecorder_hpp
10 #define anna_core_oam_CounterRecorder_hpp
11
12 #include <string>
13
14 #include <anna/core/RuntimeException.hpp>
15
16 namespace anna {
17
18 namespace oam {
19
20 class Counter;
21
22 /**
23    Interfaz que deben implementar los objetos encargados de transferir los contadores de una
24    aplicacion a un medio fisico.
25
26    Esta clase se invocara automaticamente al invocar al metodo record() de un modulo oam.
27 */
28 class CounterRecorder {
29 public:
30   /**
31      Inicia el proceso de grabacion.
32   */
33   virtual void open() throw(RuntimeException) = 0;
34
35   /**
36      Transfiere el contador recibido como parametro al medio fisico. Solo nos llegaran los
37      contadores modificados desde la ultima vez que se ejecuto el proceso de grabacion.
38      \param counter Contador que debemos transferir al medio fisico.
39   */
40   virtual void apply(const Counter& counter) throw(RuntimeException) = 0;
41
42   /**
43      Termina el proceso de grabacion.
44   */
45   virtual void close() throw() = 0;
46
47   /**
48      Devuelve una cadena con la informacion relevante de este objeto.
49      \return Una cadena con la informacion relevante de este objeto.
50   */
51   virtual std::string asString() const throw() = 0;
52 };
53
54 }
55 }
56
57 #endif
58