#ifndef PLAQUI_CONTROLCLIENT_H
#define PLAQUI_CONTROLCLIENT_H
+#include "plaqui/server/command.h"
#include "plaqui/server/connection.h"
+#include "plaqui/server/receiver.h" // TODO TEMPRORAL
#include <string>
namespace PlaQui {
/// Conexión para enviar comandos de control a una planta.
class ControlClient: public Connection {
+ /////////////////////////////////////////////////////////////////////
+ // Tipos.
+
+ public:
+
+ /////////////////////////////////////////////////////////////////////
+ /// \name Señales.
+ //@{
+
+ public:
+
+ /// Tipo de señal para indicar que se conectó.
+ typedef SigC::Signal0<void> SignalConnected;
+
+ /// Tipo de señal para indicar que se recibió una respuesta OK.
+ typedef SigC::Signal1<void, const std::string&> SignalOKReceived;
+
+ /// Tipo de señal para indicar que se recibió un error.
+ typedef SigC::Signal1<void, unsigned> SignalErrorReceived;
+
+ /// Tipo de señal para indicar que se recibió un frame. FIXME
+ typedef Receiver::SignalFrameReceived SignalFrameReceived;
+
+ /**
+ * Obtiene la señal para indicar que se recibió una respuesta OK.
+ */
+ SignalOKReceived& signal_ok_received(void);
+
+ /**
+ * Obtiene la señal para indicar que se recibió un error.
+ */
+ SignalErrorReceived& signal_error_received(void);
+
+ /**
+ * Obtiene la señal que avisa cuando se recibió un cuadro.
+ * \todo TODO Temporal.
+ */
+ SignalFrameReceived& signal_frame_received(void);
+
+ //@}
+
+ /////////////////////////////////////////////////////////////////////
+ // Atributos.
+
+ protected:
+
+ /// Señal para indicar que se recibió una respuesta OK.
+ SignalOKReceived ok_received;
+
+ /// Señal para indicar que se recibió un error.
+ SignalErrorReceived error_received;
+
+ /// Receptor del estado de la planta TODO Temporal.
+ Receiver* receiver;
+
+ /////////////////////////////////////////////////////////////////////
+ // Métodos.
+
private:
/**
- * Atiende la conexión.
+ * Realiza la conexión al servidor.
*/
- virtual void real_run(void);
+ virtual void real_run(void) throw();
public:
/**
* Destructor.
*/
- virtual ~ControlClient(void) {}
+ virtual ~ControlClient(void);
/**
* Constructor.
*
- * \param host Host al cual conectarse para enviar comandos de
+ * \param _host Host al cual conectarse para enviar comandos de
* control.
- * \param port Puerto al cual conectarse.
+ * \param _port Puerto al cual conectarse.
+ */
+ ControlClient(const std::string& _host = "localhost",
+ const Connection::Port& _port = 7522) throw(sockerr);
+
+ /**
+ * Envía un comando al servidor.
+ *
+ * \param command Comando a enviar.
*/
- ControlClient(std::string host = "localhost", int port = 7522);
+ void send(const Command& command);
};