X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/49850f467dae860e12c7851a2f8a79132f87721e..abe01db4642ea70f5d925ddcfccc6c7bf9ff8fe9:/Server/src/server.cpp?ds=inline
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("");