#ifndef PLAQUI_CONTROLSERVER_H
#define PLAQUI_CONTROLSERVER_H
-#include "plaqui/server/serverconnection.h"
+#include "plaqui/server/connection.h"
+#include "plaqui/server/command.h"
+#include "plaqui/server/response.h"
#include <socket++/sockinet.h>
+#include <sigc++/signal.h>
namespace PlaQui {
namespace Server {
/// Conexión para recibir comandos de control para una planta.
- class ControlServer: public ServerConnection {
+ class ControlServer: public Connection {
+
+ /////////////////////////////////////////////////////////////////////
+ // Tipos.
+
+ public:
+
+ /// Tipo de señal para indicar que se recibió un comando.
+ typedef SigC::Signal1<void, const Command&> SignalCommandReceived;
+
+ /////////////////////////////////////////////////////////////////////
+ // Atributos.
+
+ private:
+
+ /// Señal para indicar que se recibió un comando.
+ SignalCommandReceived command_received;
+
+ /////////////////////////////////////////////////////////////////////
+ // Métodos.
protected:
/**
* Atiende la conexión.
*/
- virtual void real_run(void);
+ virtual void real_run(void) throw();
public:
*/
ControlServer(const sockbuf::sockdesc& sd);
+ /**
+ * Envia una respuesta.
+ */
+ void send(const Response& response);
+
+ /**
+ * Obtiene la señal que avisa cuando se recibió un comando.
+ */
+ SignalCommandReceived& signal_command_received(void);
+
};
}