]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Server/include/plaqui/server/runnable.h
Capturo las seniales ANSI C SIGINT, SIGTERM y SIGQUIT para que el server salga
[z.facultad/75.42/plaqui.git] / Server / include / plaqui / server / runnable.h
index 810f5dbc3f596a9c4deecf461726cb1903325695..97b37856f880c95a26c0aed0b623d723613ee247 100644 (file)
@@ -38,7 +38,7 @@ namespace Server {
        /**
         * Objeto cuya función principal es realizar una tarea puntual.
         *
-        * Esta el la clase base para todos objetos que realizan una tarea, ya sea
+        * Esta es la clase base para todos objetos que realizan una tarea, ya sea
         * en un hilo (<em>thread</em>) propio o no. Al tener esta flexibilidad hay
         * dos formas típicas de usarlo cuyo punto en común es implementar una
         * subclase (ya que esta clase es abstracta) y sobreescribir el método
@@ -71,6 +71,7 @@ namespace Server {
         *   signal_finished(). El caso típico sería:
         *   \code
         *   #include "runnable.h"
+        *   #include <sigc++/slot.h>
         *   #include <iostream>
         *
         *   // Mi objeto que realiza la tarea.
@@ -89,6 +90,8 @@ namespace Server {
         *   // Programa principal.
         *   int main(void) {
         *       runner = new MiRunnable();
+        *       // Conecta la señal finished para saber cuando terminó.
+        *       runner->signal_finished().connect(SigC::slot(on_finished));
         *       runner->run(); // Corre en un hilo propio
         *       // Espera a que termine la tarea.
         *       while (runner) {
@@ -113,6 +116,27 @@ namespace Server {
                        /// Error.
                        typedef unsigned Error;
 
+               /////////////////////////////////////////////////////////////////////
+               /// \name Señales
+               //@{
+
+               public:
+
+                       /// Tipo de señal para indicar que se finalizó la tarea.
+                       typedef SigC::Signal0<void> SignalFinished;
+
+                       /// Tipo de señal para indicar que hubo un error.
+                       typedef SigC::Signal2<void, const Error&, const std::string&>
+                               SignalError;
+
+                       /// Obtiene la señal que avisa cuando la tarea es finalizada.
+                       SignalFinished& signal_finished(void);
+
+                       /// Obtiene la señal que avisa que hubo un error.
+                       SignalError& signal_error(void);
+
+               //@}
+
                /////////////////////////////////////////////////////////////////////
                // Atributos.
 
@@ -194,24 +218,6 @@ namespace Server {
                         */
                        virtual void finish(void);
 
-                       /////////////////////////////////////////////////////////////////
-                       /// \name Señales.
-                       //@{
-
-                       /// Tipo de señal para indicar que se finalizó la tarea.
-                       typedef SigC::Signal0<void> SignalFinished;
-
-                       /// Tipo de señal para indicar que hubo un error.
-                       typedef SigC::Signal2<void, const Error&, const std::string&>
-                               SignalError;
-
-                       /// Obtiene la señal que avisa cuando la tarea es finalizada.
-                       SignalFinished& signal_finished(void);
-
-                       /// Obtiene la señal que avisa que hubo un error.
-                       SignalError& signal_error(void);
-
-                       //@}
 
        };