public:
+ /// Error.
+ typedef unsigned Error;
+
/// 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;
+
// Atributos.
private:
/// Thread en el cual correr la tarea.
Glib::Thread* thread;
- /// Indica si se debe frinalizar la tarea.
- bool stop;
-
/// Señal que indica que se finalizó la tarea.
SignalFinished finished;
+ protected:
+
+ /// Señal que indica que hubo un error.
+ SignalError error;
+
+ /**
+ * Indica si se debe frinalizar la tarea.
+ *
+ * \todo Poner como privado y poner get() set() con locks.
+ */
+ bool stop;
+
// Métodos.
private:
/**
* Destructor.
*/
- virtual ~Runnable(void) {}
+ virtual ~Runnable(void);
/**
* Constructor.
* \param attach Si es true, la función no retorna hasta que no
* finalice la tearea (no recomendable).
*
- * \see Para saber cuando la tarea fue finalizada puede utilizar
- * la señal signal_finished().
+ * \note Para saber cuando la tarea fue finalizada puede utilizar
+ * la señal signal_finished().
*/
virtual void finish(bool attach = false);
/**
* Obtiene la señal que avisa cuando la tarea es finalizada.
- *
- * \see Para saber cuando la tarea fue finalizada puede utilizar
- * la señal signal_finished().
*/
SignalFinished& signal_finished(void);
+ /**
+ * Obtiene la señal que avisa que hubo un error.
+ */
+ SignalError& signal_error(void);
+
};
}