X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/a9d033a0a6748c192d30c9c65ebcc8b1a96cd43b..e4f66a8221e3f2156d89a7a358073863503b2564:/Server/src/server.cpp?ds=sidebyside diff --git a/Server/src/server.cpp b/Server/src/server.cpp index bb66fe5..8f76922 100644 --- a/Server/src/server.cpp +++ b/Server/src/server.cpp @@ -145,6 +145,8 @@ void Server::on_control_command_received(const Command& command, response = cmd_plant_list(); } else if (command.get_command() == "get") { response = cmd_plant_get(command); + } else if (command.get_command() == "set") { + response = cmd_plant_set(command); } else if (command.get_command() == "stop") { response = cmd_plant_stop(command); } else { @@ -155,7 +157,7 @@ void Server::on_control_command_received(const Command& command, response = new HTTPResponse(HTTPMessage::NOT_FOUND, "Invalid taget!"); } // FIXME - response->headers["Content-Type"] = "text/html; charset=iso-8859-1"; + response->headers["Content-Type"] = "text/xml; charset=iso-8859-1"; //response->headers["Connection"] = "close"; controlserver->send(*response); delete response; @@ -169,37 +171,14 @@ void Server::on_control_command_received(const Command& command, HTTPResponse* Server::cmd_server_status(void) const { // FIXME stringstream response_xml; - response_xml << "" << endl; - response_xml << " " << endl; - response_xml << " PlaQui v0.8" << endl; - response_xml << " " << endl; - response_xml << " " << endl; - response_xml << "

PlaQui

" << endl; - response_xml << "

versión 0.8

" << endl; -/* response_xml << "

Comando

" << endl; - response_xml << " " << endl;*/ - response_xml << "

Desarrollado por

" << endl; - response_xml << " " << endl; - response_xml << "
" << endl; - response_xml << " Copyleft 2003 - bajo los " << endl; - response_xml << " términos de la licencia GPL" << endl; - response_xml << "
" << endl; - response_xml << " " << endl; - response_xml << "" << endl; + response_xml << "" << endl; + response_xml << "\t0.9" << endl; + response_xml << "\t" << endl; + response_xml << "\t\tNicolás Dimov" << endl; + response_xml << "\t\tLeandro Lucarella" << endl; + response_xml << "\t\tRicardo Markiewicz" << endl; + response_xml << "\t" << endl; + response_xml << "" << endl; return new HTTPResponse(HTTPMessage::OK, response_xml.str()); } @@ -207,29 +186,15 @@ HTTPResponse* Server::cmd_connection_list(void) { // FIXME TCPServer::ConnectionInfoList cil = get_connected(); stringstream response_xml; - response_xml << "" << endl; - response_xml << " " << endl; - response_xml << " PlaQui v0.8" << endl; - response_xml << " " << endl; - response_xml << " " << endl; - response_xml << "

PlaQui

" << endl; - response_xml << "

versión 0.8

" << endl; - response_xml << "

Lista de conexiones:

" << endl; - response_xml << " " << endl; - response_xml << "
" << endl; - response_xml << " Copyleft 2003 - bajo los " << endl; - response_xml << " términos de la licencia GPL" << endl; - response_xml << "
" << endl; - response_xml << " " << endl; - response_xml << "" << endl; + response_xml << "" << endl; return new HTTPResponse(HTTPMessage::OK, response_xml.str()); } @@ -253,15 +218,7 @@ HTTPResponse* Server::cmd_connection_stop(const Command& command) { HTTPResponse* Server::cmd_transmission_list(void) { // FIXME stringstream response_xml; - response_xml << "" << endl; - response_xml << " " << endl; - response_xml << " PlaQui v0.8" << endl; - response_xml << " " << endl; - response_xml << " " << endl; - response_xml << "

PlaQui

" << endl; - response_xml << "

versión 0.8

" << endl; - response_xml << "

Lista de transmisiones:

" << endl; - response_xml << " " << endl; - response_xml << "
" << endl; - response_xml << " Copyleft 2003 - bajo los " << endl; - response_xml << " términos de la licencia GPL" << endl; - response_xml << "
" << endl; - response_xml << " " << endl; - response_xml << "" << endl; + response_xml << "" << endl; return new HTTPResponse(HTTPMessage::OK, response_xml.str()); } @@ -337,30 +288,16 @@ HTTPResponse* Server::cmd_transmission_stop(const Command& command) { HTTPResponse* Server::cmd_plant_list(void) { // FIXME stringstream response_xml; - response_xml << "" << endl; - response_xml << " " << endl; - response_xml << " PlaQui v0.8" << endl; - response_xml << " " << endl; - response_xml << " " << endl; - response_xml << "

PlaQui

" << endl; - response_xml << "

versión 0.8

" << endl; - response_xml << "

Lista de plantas:

" << endl; - response_xml << " " << endl; - response_xml << "
" << endl; - response_xml << " Copyleft 2003 - bajo los " << endl; - response_xml << " términos de la licencia GPL" << endl; - response_xml << "
" << endl; - response_xml << " " << endl; - response_xml << "" << endl; + response_xml << "" << endl; return new HTTPResponse(HTTPMessage::OK, response_xml.str()); } @@ -370,20 +307,44 @@ HTTPResponse* Server::cmd_plant_get(const Command& command) { "Faltan argumentos."); } Glib::Mutex::Lock lock(plants_mutex); - string name = command.get_args()[0]; - if (plants.find(name) == plants.end()) { + string plant = command.get_args()[0]; + if (plants.find(plant) == plants.end()) { return new HTTPResponse(HTTPMessage::NOT_FOUND, - string("No existe la planta ") + name); + string("No existe la planta ") + plant); } - string xml = plants[name]->get_xml(); + string xml = plants[plant]->get_xml(); if (xml.length()) { return new HTTPResponse(HTTPMessage::OK, xml); } else { return new HTTPResponse(HTTPMessage::INTERNAL_SERVER_ERROR, - ("No se pudo obtener el XML de la planta ") + name); + ("No se pudo obtener el XML de la planta ") + plant); } } +HTTPResponse* Server::cmd_plant_set(const Command& command) { + const Command::Arguments& args = command.get_args(); + if (args.size() < 4) { + return new HTTPResponse(HTTPMessage::CONFLICT, + "Faltan argumentos."); + } + string plant = args[0]; + string element = args[1]; + string key = args[2]; + string value = args[3]; + Glib::Mutex::Lock lock(plants_mutex); + PlantList::iterator p = plants.find(plant); + if (p == plants.end()) { + return new HTTPResponse(HTTPMessage::NOT_FOUND, + string("No existe la planta '") + plant + "'."); + } +/* if (!plants[plant]->set_element(host, port)) { + return new HTTPResponse(HTTPMessage::INTERNAL_SERVER_ERROR, + string("Error al crear la transmisión a de la planta '") + + plant + "' a " + host + ":" + args[2] + "."); + }*/ + return new HTTPResponse(HTTPMessage::OK); +} + HTTPResponse* Server::cmd_plant_stop(const Command& command) { if (!command.get_args().size()) { return new HTTPResponse(HTTPMessage::CONFLICT,