]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Server/include/plaqui/server/server.h
Se corrige un bug en la carga del XML. Me habia olvidado que hay elementos con 3...
[z.facultad/75.42/plaqui.git] / Server / include / plaqui / server / server.h
index 1179fdc2b9ae3524519238a088d5b63f646ca3f7..21a1958e798dd6dc6973d8c65bd28e801059a6b5 100644 (file)
@@ -35,7 +35,7 @@
 #include "plaqui/server/command.h"
 #include <socket++/sockinet.h>
 #include <string>
-#include <list>
+#include <map>
 
 namespace PlaQui {
 
@@ -51,22 +51,13 @@ namespace Server {
 
                private:
 
-                       /// Lista de conexiones de control.
-                       typedef std::list<Transmitter*> TransmitterList;
-
                        /// Lista de plantas químicas.
-                       typedef std::list<Plant*> PlantList;
+                       typedef std::map<std::string, Plant*> 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;
 
@@ -101,6 +92,36 @@ namespace Server {
                         */
                        HTTPResponse* cmd_connection_stop(const Command& command);
 
+                       /**
+                        * Maneja el comando transmission/list.
+                        */
+                       HTTPResponse* cmd_transmission_list(void);
+
+                       /**
+                        * Maneja el comando transmission/start.
+                        */
+                       HTTPResponse* cmd_transmission_start(const Command& command);
+
+                       /**
+                        * Maneja el comando transmission/stop.
+                        */
+                       HTTPResponse* cmd_transmission_stop(const Command& command);
+
+                       /**
+                        * Maneja el comando plant/list.
+                        */
+                       HTTPResponse* cmd_plant_list(void);
+
+                       /**
+                        * Maneja el comando plant/get.
+                        */
+                       HTTPResponse* cmd_plant_get(const Command& command);
+
+                       /**
+                        * Maneja el comando plant/stop.
+                        */
+                       HTTPResponse* cmd_plant_stop(const Command& command);
+
                public:
 
                        /**
@@ -113,40 +134,28 @@ namespace Server {
                         *
                         * \param port Puerto en el cual escuchar.
                         */
-                       Server(int port = 7522);
+                       Server(const std::string& plant_filename,
+                                       const Connection::Port& port = 7522);
 
                        /**
-                        * 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 los comandos recibidos por las conexiones.
                         */
-                       bool start_transmission(std::string host = "localhost",
-                                       int port = 7528);
+                       void on_control_command_received(const Command& command,
+                                       ControlServer* controlserver);
 
                        /**
-                        * 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.
+                        * Se encarga de borrar una planta de la lista cuando finaliza.
                         *
-                        * \todo Ver de hacer un TransmissionManager.
+                        * \param connection Conexión a eliminar.
                         */
-                       bool stop_transmission(std::string host, int port);
+                       void on_plant_finished(const char* plant);
 
                        /**
-                        * Maneja los comandos recibidos por las conexiones.
+                        * Envia el estado de una planta cuando esta se actualiza.
+                        *
+                        * \param plant Planta actualizada.
                         */
-                       void on_control_command_received(const Command& command,
-                                       ControlServer* controlserver);
+                       void on_plant_updated(const Plant* const);
 
        };