#define PLAQUI_CONTROLSERVER_H
#include "plaqui/server/connection.h"
+#include "plaqui/server/command.h"
+#include "plaqui/server/httpresponse.h"
#include <socket++/sockinet.h>
+#include <sigc++/signal.h>
-namespace Plaqui {
+namespace PlaQui {
+
+namespace Server {
/// Conexión para recibir comandos de control para una planta.
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:
/**
* Destructor.
*/
- virtual ~ControlServer(void) {}
+ virtual ~ControlServer(void);
/**
* Constructor.
*/
ControlServer(const sockbuf::sockdesc& sd);
+ /**
+ * Envia una respuesta.
+ */
+ void send(const HTTPResponse& response);
+
+ /**
+ * Obtiene la señal que avisa cuando se recibió un comando.
+ */
+ SignalCommandReceived& signal_command_received(void);
+
};
}
+}
#endif // PLAQUI_CONTROLSERVER_H