X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/a0481d50f6da9cac5efd3502c3657b3fc461ec0d..7ef672fd3601055cca3697fd0c4d534dbb9153c5:/Server/include/plaqui/server/server.h diff --git a/Server/include/plaqui/server/server.h b/Server/include/plaqui/server/server.h index 1179fdc..0e5fe2b 100644 --- a/Server/include/plaqui/server/server.h +++ b/Server/include/plaqui/server/server.h @@ -35,7 +35,7 @@ #include "plaqui/server/command.h" #include #include -#include +#include namespace PlaQui { @@ -47,32 +47,26 @@ namespace Server { */ class Server: public TCPServer { + ///////////////////////////////////////////////////////////////////// // Tipos. private: - /// Lista de conexiones de control. - typedef std::list TransmitterList; - /// Lista de plantas químicas. - typedef std::list PlantList; + typedef std::map PlantList; + ///////////////////////////////////////////////////////////////////// // Atributos. private: - /// Transmisiones del estado de las plantas. - TransmitterList transmissions; - - /// 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. protected: @@ -101,46 +95,56 @@ namespace Server { */ HTTPResponse* cmd_connection_stop(const Command& command); - public: + /** + * Maneja el comando transmission/list. + */ + HTTPResponse* cmd_transmission_list(void); /** - * Destructor. + * Maneja el comando transmission/start. */ - virtual ~Server(void); + HTTPResponse* cmd_transmission_start(const Command& command); /** - * Constructor. - * - * \param port Puerto en el cual escuchar. + * Maneja el comando transmission/stop. */ - Server(int port = 7522); + HTTPResponse* cmd_transmission_stop(const Command& command); /** - * Comienza la transimisión del estado de una planta. - * - * \param host Host al cual se quiere transmitir. - * \param port Puerto al cual transmitir. - * - * \return true si se pudo empezar a transmitir, false si no. - * - * \todo Ver si es necesario que devuelva algo y si devuelve ver si - * no sería mejor que dé más información (si no se pudo abrir - * o si ya estaba abierto por ejemplo. + * Maneja el comando plant/list. */ - bool start_transmission(std::string host = "localhost", - int port = 7528); + HTTPResponse* cmd_plant_list(void); /** - * Finaliza la transimisión del estado de una planta. - * - * \param host Host al cual se quiere dejar de transmitir. - * \param port Puerto al cual dejar de transmitir. - * - * \return true si se pudo empezar a transmitir, false si no. + * Maneja el comando plant/get. + */ + HTTPResponse* cmd_plant_get(const Command& command); + + /** + * Maneja el comando plant/get. + */ + HTTPResponse* cmd_plant_set(const Command& command); + + /** + * Maneja el comando plant/stop. + */ + HTTPResponse* cmd_plant_stop(const Command& command); + + public: + + /** + * Destructor. + */ + virtual ~Server(void); + + /** + * Constructor. * - * \todo Ver de hacer un TransmissionManager. + * \param plant_filename Nombre del archivo con la planta a cargar. + * \param port Puerto en el cual escuchar. */ - bool stop_transmission(std::string host, int port); + Server(const std::string& plant_filename, + const Connection::Port& port = 7522) throw(sockerr); /** * Maneja los comandos recibidos por las conexiones. @@ -148,6 +152,13 @@ namespace Server { void on_control_command_received(const Command& command, ControlServer* controlserver); + /** + * Se encarga de borrar una planta de la lista cuando finaliza. + * + * \param plant Nombre de la planta a elminar. + */ + void on_plant_finished(const char* plant); + }; }