X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/43203fc1132e402ab5751167ed64196f10f5dedf..a0481d50f6da9cac5efd3502c3657b3fc461ec0d:/Server/include/plaqui/server/server.h diff --git a/Server/include/plaqui/server/server.h b/Server/include/plaqui/server/server.h index f16e2df..1179fdc 100644 --- a/Server/include/plaqui/server/server.h +++ b/Server/include/plaqui/server/server.h @@ -31,6 +31,8 @@ #include "plaqui/server/tcpserver.h" #include "plaqui/server/controlserver.h" #include "plaqui/server/transmitter.h" +#include "plaqui/server/plant.h" +#include "plaqui/server/command.h" #include #include #include @@ -52,8 +54,8 @@ namespace Server { /// Lista de conexiones de control. typedef std::list TransmitterList; - // TODO: - // typedef std::list PlantList; + /// Lista de plantas químicas. + typedef std::list PlantList; // Atributos. @@ -62,24 +64,49 @@ namespace Server { /// Transmisiones del estado de las plantas. TransmitterList transmissions; - // TODO: - // PlantList plants; + /// Mutex para las transmisiones. + Glib::Mutex transmissions_mutex; + + // Plantas disponibles en el servidor. + PlantList plants; + + /// Mutex para las plantas. + Glib::Mutex plants_mutex; // Métodos. - private: + protected: + + /** + * Obtiene una nueva \ref Connection "conexión". + * + * \param sd Descriptor del socket de la nueva conexión. + * + * \return Nueva conexión. + */ + virtual Connection* new_connection(const sockbuf::sockdesc& sd); /** - * Entra en el loop para atender conexiones. + * Maneja el comando server/status. */ - virtual void real_run(void); + HTTPResponse* cmd_server_status(void) const; + + /** + * Maneja el comando connection/list. + */ + HTTPResponse* cmd_connection_list(void); + + /** + * Maneja el comando connection/stop. + */ + HTTPResponse* cmd_connection_stop(const Command& command); public: /** * Destructor. */ - virtual ~Server(void) {} + virtual ~Server(void); /** * Constructor. @@ -117,10 +144,9 @@ namespace Server { /** * Maneja los comandos recibidos por las conexiones. - * - * \todo Hacer un tipo Command abstracto o algo así. */ - void on_connection_command_received(void* command); + void on_control_command_received(const Command& command, + ControlServer* controlserver); };