]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Server/src/server.cpp
- Se agrega la posibilidad de pausar una planta.
[z.facultad/75.42/plaqui.git] / Server / src / server.cpp
index 32b23e5daa7d68b59e32ee854d8641e5d9447bb8..fac84190fd31f51a2b90667ccd0a93028b56b5de 100644 (file)
@@ -159,6 +159,10 @@ void Server::on_control_command_received(const Command& command,
                        response = cmd_plant_get(command);
                } else if (command.get_command() == "set") {
                        response = cmd_plant_set(command);
+               } else if (command.get_command() == "set_frequency") {
+                       response = cmd_plant_set_frequency(command);
+               } else if (command.get_command() == "start") {
+                       response = cmd_plant_start(command);
                } else if (command.get_command() == "stop") {
                        response = cmd_plant_stop(command);
                } else {
@@ -368,6 +372,40 @@ HTTPResponse* Server::cmd_plant_set(const Command& command) {
                        string("<response desc=\"Se cambió el estado del elemento '") + element + "'.\" />");
 }
 
+HTTPResponse* Server::cmd_plant_set_frequency(const Command& command) {
+       if (command.get_args().size() < 2) {
+               return new HTTPResponse(HTTPMessage::CONFLICT,
+                               "<response desc=\"Faltan argumentos.\" />");
+       }
+       Glib::Mutex::Lock lock(plants_mutex);
+       const string name = command.get_args()[0];
+       if (plants.find(name) == plants.end()) {
+               return new HTTPResponse(HTTPMessage::NOT_FOUND,
+                               string("<response desc=\"No existe la planta ") + name + "\" />");
+       }
+       unsigned hz;
+       to(command.get_args()[1], hz);
+       plants[name]->set_frequency(hz);
+       return new HTTPResponse(HTTPMessage::OK,
+                       string("<response desc=\"La planta '") + name + "' fue pausada.\" />");
+}
+
+HTTPResponse* Server::cmd_plant_start(const Command& command) {
+       if (!command.get_args().size()) {
+               return new HTTPResponse(HTTPMessage::CONFLICT,
+                               "<response desc=\"Faltan argumentos.\" />");
+       }
+       Glib::Mutex::Lock lock(plants_mutex);
+       const string name = command.get_args()[0];
+       if (plants.find(name) == plants.end()) {
+               return new HTTPResponse(HTTPMessage::NOT_FOUND,
+                               string("<response desc=\"No existe la planta ") + name + "\" />");
+       }
+       plants[name]->set_paused(false);
+       return new HTTPResponse(HTTPMessage::OK,
+                       string("<response desc=\"La planta '") + name + "' fue reanudada.\" />");
+}
+
 HTTPResponse* Server::cmd_plant_stop(const Command& command) {
        if (!command.get_args().size()) {
                return new HTTPResponse(HTTPMessage::CONFLICT,
@@ -379,7 +417,22 @@ HTTPResponse* Server::cmd_plant_stop(const Command& command) {
                return new HTTPResponse(HTTPMessage::NOT_FOUND,
                                string("<response desc=\"No existe la planta ") + name + "\" />");
        }
-       // TODO Ver si al frenar la planta se destruye (no deberia!!!)
+       plants[name]->set_paused(true);
+       return new HTTPResponse(HTTPMessage::OK,
+                       string("<response desc=\"La planta '") + name + "' fue pausada.\" />");
+}
+
+HTTPResponse* Server::cmd_plant_remove(const Command& command) {
+       if (!command.get_args().size()) {
+               return new HTTPResponse(HTTPMessage::CONFLICT,
+                               "<response desc=\"Faltan argumentos.\" />");
+       }
+       Glib::Mutex::Lock lock(plants_mutex);
+       const string name = command.get_args()[0];
+       if (plants.find(name) == plants.end()) {
+               return new HTTPResponse(HTTPMessage::NOT_FOUND,
+                               string("<response desc=\"No existe la planta ") + name + "\" />");
+       }
        plants[name]->finish();
        return new HTTPResponse(HTTPMessage::OK,
                        string("<response desc=\"La planta '") + name + "' se cerrará en instantes...\" />");