X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/49850f467dae860e12c7851a2f8a79132f87721e..abe01db4642ea70f5d925ddcfccc6c7bf9ff8fe9:/Server/src/server.cpp?ds=sidebyside diff --git a/Server/src/server.cpp b/Server/src/server.cpp index 32b23e5..fac8419 100644 --- a/Server/src/server.cpp +++ b/Server/src/server.cpp @@ -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(""); } +HTTPResponse* Server::cmd_plant_set_frequency(const Command& command) { + if (command.get_args().size() < 2) { + return new HTTPResponse(HTTPMessage::CONFLICT, + ""); + } + 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(""); + } + unsigned hz; + to(command.get_args()[1], hz); + plants[name]->set_frequency(hz); + return new HTTPResponse(HTTPMessage::OK, + string(""); +} + +HTTPResponse* Server::cmd_plant_start(const Command& command) { + if (!command.get_args().size()) { + return new HTTPResponse(HTTPMessage::CONFLICT, + ""); + } + 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(""); + } + plants[name]->set_paused(false); + return new HTTPResponse(HTTPMessage::OK, + string(""); +} + 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(""); } - // TODO Ver si al frenar la planta se destruye (no deberia!!!) + plants[name]->set_paused(true); + return new HTTPResponse(HTTPMessage::OK, + string(""); +} + +HTTPResponse* Server::cmd_plant_remove(const Command& command) { + if (!command.get_args().size()) { + return new HTTPResponse(HTTPMessage::CONFLICT, + ""); + } + 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(""); + } plants[name]->finish(); return new HTTPResponse(HTTPMessage::OK, string("");