From e4f66a8221e3f2156d89a7a358073863503b2564 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Tue, 18 Nov 2003 23:20:09 +0000 Subject: [PATCH] - Se limpian un poco las respuestas, ahora lo que van a ser respuestas reales, se manda en XML. - Se implementa el esqueleto del comando /plant/set. Me falta conocer algunos detalles de que y como setear las cosas para terminarlo. --- Server/include/plaqui/server/server.h | 5 + Server/src/controlserver.cpp | 49 --------- Server/src/server.cpp | 143 ++++++++++---------------- 3 files changed, 57 insertions(+), 140 deletions(-) diff --git a/Server/include/plaqui/server/server.h b/Server/include/plaqui/server/server.h index 21a1958..b295483 100644 --- a/Server/include/plaqui/server/server.h +++ b/Server/include/plaqui/server/server.h @@ -117,6 +117,11 @@ namespace Server { */ HTTPResponse* cmd_plant_get(const Command& command); + /** + * Maneja el comando plant/get. + */ + HTTPResponse* cmd_plant_set(const Command& command); + /** * Maneja el comando plant/stop. */ diff --git a/Server/src/controlserver.cpp b/Server/src/controlserver.cpp index 32d3306..23f89c4 100644 --- a/Server/src/controlserver.cpp +++ b/Server/src/controlserver.cpp @@ -126,55 +126,6 @@ void ControlServer::real_run(void) { #endif // DEBUG // Manda el comando. command_received(command); - // FIXME - hacer respuesta XML. - // La respuesta hay que mandarla asincrónicamente porque no puedo - // responder hasta que la planta no se termine de actualizar, por - // ejemplo. - //stringstream response_xml; - //socket << "HTTP/1.0 200 OK" << endl; -/* -Date: Sun, 19 Oct 2003 15:11:14 GMT -Server: Apache/1.3.28 (Debian GNU/Linux) -Last-Modified: Mon, 28 Apr 2003 07:50:08 GMT -Accept-Ranges: bytes -*/ -/* - socket << "Content-Type: text/html; charset=iso-8859-1" << endl; - response_xml << "" << endl; - response_xml << " " << endl; - response_xml << " PlaQui v0.4" << endl; - response_xml << " " << endl; - response_xml << " " << endl; - response_xml << "

PlaQui

" << endl; - response_xml << "

versión 0.4

" << 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; - socket << "Content-Length: " << response_xml.str().length() << endl; - socket << endl; - socket << response_xml.str() << flush; -*/ } } diff --git a/Server/src/server.cpp b/Server/src/server.cpp index 2f93c6d..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 { @@ -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, -- 2.43.0