Remove dynamic exceptions
[anna.git] / include / anna / timex / TimeEventObserver.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_timex_TimeEventObserver_hpp
10 #define anna_timex_TimeEventObserver_hpp
11
12 namespace anna {
13
14 namespace timex {
15
16 class TimeEvent;
17 class Engine;
18
19 /**
20    Clase base que se encarga de recibir las notificaciones basicas referentes al timex::TimeEvent.
21
22    Hemos comprobado que casi todos los procesos hay alguna entidad que se encarga de crear
23    los timex::TimeEvent que van siendo necesarios, normalmente usando un anna::Recycler<T>,
24    por lo que como minimo esta entidad tiene que preocuparse por cuando expiran los eventos
25    temporales y por cuando se caducan, para poder liberar su espacio.
26
27    Para facilitar el tratamiento de notificaciones vamos a incorporar esta clase, por ahora solo
28    recibe notificaciones de cuando se deja de usar un timex::TimeEvent, pero en el futuro podria
29    recibir mas eventos.
30
31    \see timex::TimeEvent::setObserver
32 */
33 class TimeEventObserver {
34 public:
35   /**
36      Constructor
37      @param name Nombre logico de este alojador.
38   */
39   TimeEventObserver(const char* name) : a_name(name) {}
40
41   /**
42      Devuelve una cadena con la informacion referente a este temporizador.
43      \return Una cadena con la informacion referenta a este temporizador.
44   */
45   std::string asString() const
46   {
47     std::string msg("timex::TimeEventObserver { Name: ");
48     msg += a_name;
49     return msg += " }";
50   }
51
52 protected:
53   /**
54      Metodo virtual que debe reimplmentar para liberar el espacio reservado para el
55      evento temporal recibido como parametro.
56
57      Se invoca cuando el timex::Engine deja de usar el evento temporal.
58
59      \param timeEvent Evento temporal a liberar.
60   */
61   virtual void release(timex::TimeEvent* timeEvent)  = 0;
62
63 private:
64   std::string a_name;
65
66   friend class Engine;
67 };
68
69 }
70 }
71
72 #endif
73
74