X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/9317ed8f3f8241a30fd09b6800ff96b2ac138747..9322e49b932d824e5664aa8c0e0f9a41464537b1:/Server/include/plaqui/server/server.h diff --git a/Server/include/plaqui/server/server.h b/Server/include/plaqui/server/server.h index 611ac23..f0f1644 100644 --- a/Server/include/plaqui/server/server.h +++ b/Server/include/plaqui/server/server.h @@ -30,9 +30,10 @@ #include "plaqui/server/tcpserver.h" #include "plaqui/server/controlserver.h" -#include "plaqui/server/transmitter.h" +//#include "plaqui/server/transmitter.h" #include "plaqui/server/plant.h" #include "plaqui/server/command.h" +#include "plaqui/server/response.h" #include #include #include @@ -43,7 +44,18 @@ namespace Server { /** * Servidor de plantas químicas. - * Maneja múltiples conexiones, de control o de transmisión. + * + * Esta clase se encarga, entre otras cosas, de definir el método + * new_connection() de TCPServer para crear una nueva + * \ref ControlServer "conexión de control" para atender las conexiones que + * éste recibe. + * + * Una vez recibida una conexión, esta clase se encarga de manejar los + * comandos que a través de ella se reciben a través de los métodos como + * cmd_server_info(), cmd_connection_list(), etc. + * + * Esta clase es también la encargado de mantener la \ref plants "lista" de + * \ref Plant "plantas" que se están sirviendo (y simulando). */ class Server: public TCPServer { @@ -81,69 +93,69 @@ namespace Server { virtual Connection* new_connection(const sockbuf::sockdesc& sd); /** - * Maneja el comando server/status. + * Maneja el comando server/info. */ - HTTPResponse* cmd_server_status(void) const; + Response* cmd_server_info(void) const; /** * Maneja el comando connection/list. */ - HTTPResponse* cmd_connection_list(void); + Response* cmd_connection_list(void); /** * Maneja el comando connection/stop. */ - HTTPResponse* cmd_connection_stop(const Command& command); + Response* cmd_connection_stop(const Command& command); /** * Maneja el comando transmission/list. */ - HTTPResponse* cmd_transmission_list(void); + Response* cmd_transmission_list(void); /** * Maneja el comando transmission/start. */ - HTTPResponse* cmd_transmission_start(const Command& command); + Response* cmd_transmission_start(const Command& command); /** * Maneja el comando transmission/stop. */ - HTTPResponse* cmd_transmission_stop(const Command& command); + Response* cmd_transmission_stop(const Command& command); /** * Maneja el comando plant/list. */ - HTTPResponse* cmd_plant_list(void); + Response* cmd_plant_list(void); /** * Maneja el comando plant/get. */ - HTTPResponse* cmd_plant_get(const Command& command); + Response* cmd_plant_get(const Command& command); /** * Maneja el comando plant/set. */ - HTTPResponse* cmd_plant_set(const Command& command); + Response* cmd_plant_set(const Command& command); /** * Maneja el comando plant/set_frequency. */ - HTTPResponse* cmd_plant_set_frequency(const Command& command); + Response* cmd_plant_set_frequency(const Command& command); /** * Maneja el comando plant/start. */ - HTTPResponse* cmd_plant_start(const Command& command); + Response* cmd_plant_start(const Command& command); /** * Maneja el comando plant/stop. */ - HTTPResponse* cmd_plant_stop(const Command& command); + Response* cmd_plant_stop(const Command& command); /** * Maneja el comando plant/remove. */ - HTTPResponse* cmd_plant_remove(const Command& command); + Response* cmd_plant_remove(const Command& command); public: @@ -155,11 +167,21 @@ namespace Server { /** * Constructor. * - * \param plant_filename Nombre del archivo con la planta a cargar. - * \param port Puerto en el cual escuchar. + * \param port Puerto en el cual escuchar. */ - Server(const std::string& plant_filename, - const Connection::Port& port = 7522) throw(sockerr); + Server(const Connection::Port& port = 7522) throw(sockerr); + + /** + * Agrega una planta al servidor. + * + * \param name Nombre que utilizará el servidor para identificar + * a la planta. + * \param filename Nombre del archivo con la planta a cargar. + * \return true si se agregó la planta, false si ya existía una + * planta con ese nombre. + */ + bool add_plant(const std::string& name, + const std::string& filename); /** * Maneja los comandos recibidos por las conexiones.