#ifndef PLAQUI_RECEIVER_H
#define PLAQUI_RECEIVER_H
-#include "plaqui/server/serverconnection.h"
+#include "plaqui/server/connection.h"
#include <socket++/sockinet.h>
+#include <sigc++/signal.h>
#include <string>
namespace PlaQui {
namespace Server {
/// Conexión para recibir el estado de una planta.
- class Receiver: public ServerConnection {
+ class Receiver: public Connection {
+
+ /////////////////////////////////////////////////////////////////////
+ // Constantes.
+
+ private:
+
+ /// Marca de comienzo de frame.
+ static const std::string FRAME_BEGIN;
+
+ /// Marca de fin de frame.
+ static const std::string FRAME_END;
+
+ /////////////////////////////////////////////////////////////////////
+ // Tipos.
+
+ public:
+
+ /// Tipo de señal para indicar que se recibió un cuadro.
+ typedef SigC::Signal1<void, const std::string&> SignalFrameReceived;
+
+
+ // Atributos.
+
+ private:
+
+ /// Señal que indica que se recibió un cuadro.
+ SignalFrameReceived frame_received;
+
+ /////////////////////////////////////////////////////////////////////
+ // Métodos.
+
+ private:
+
+ /**
+ * Recibe la transmisión.
+ */
+ virtual void real_run(void) throw();
public:
/**
* Destructor.
*/
- virtual ~Receiver(void) {}
+ virtual ~Receiver(void);
/**
* Constructor.
* \param port Puerto por el cual recibir estado de la planta.
* \param host Host del cual recibir el estado de la planta.
*/
- Receiver(int port = 7528, std::string host = "localhost");
+ Receiver(const Connection::Port& port = 7528,
+ const std::string& host = "localhost") throw(sockerr);
/**
- * Recibe la transmisión.
+ * Obtiene la señal que avisa cuando se recibió un cuadro.
*/
- virtual void run(void);
+ SignalFrameReceived& signal_frame_received(void);
};