1 // vim: set noexpandtab tabstop=4 shiftwidth=4:
2 //----------------------------------------------------------------------------
4 //----------------------------------------------------------------------------
5 // This file is part of PlaQui.
7 // PlaQui is free software; you can redistribute it and/or modify it under the
8 // terms of the GNU General Public License as published by the Free Software
9 // Foundation; either version 2 of the License, or (at your option) any later
12 // PlaQui is distributed in the hope that it will be useful, but WITHOUT ANY
13 // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 // FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
17 // You should have received a copy of the GNU General Public License along
18 // with PlaQui; if not, write to the Free Software Foundation, Inc., 59 Temple
19 // Place, Suite 330, Boston, MA 02111-1307 USA
20 //----------------------------------------------------------------------------
21 // Creado: lun nov 17 20:35:08 ART 2003
22 // Autores: Leandro Lucarella <llucare@fi.uba.ar>
23 //----------------------------------------------------------------------------
28 #ifndef PLAQUI_RESPONSE_H
29 #define PLAQUI_RESPONSE_H
31 #include "plaqui/server/httpresponse.h"
32 #include <libxml++/libxml++.h>
39 /// Respuesta del servidor.
40 class Response: private HTTPResponse {
42 /////////////////////////////////////////////////////////////////////
47 /// Código de respuesta.
56 TRANSMISSION_NOT_FOUND,
59 ELEMENT_INPUT_NOT_FOUND,
60 ERROR_STARTING_TRANSMISSION,
61 ERROR_GETING_PLANT_XML,
62 ERROR_CHANGING_ELEMENT_INPUT
68 class Parser: public xmlpp::SaxParser {
70 /////////////////////////////////////////////////////////////
75 /// Respuesta en la cual se dejan los datos.
78 /// Indica si está en el nivel raíz del XML.
81 /////////////////////////////////////////////////////////////
86 virtual void on_start_element(const std::string& name,
87 const AttributeMap& attrs);
89 virtual void on_end_element(const std::string& name);
91 virtual void on_characters(const std::string& chars);
96 virtual ~Parser(void);
101 * \param resp Respuesta en la cual dejar los datos.
103 Parser(Response& resp);
107 /////////////////////////////////////////////////////////////////////
112 /// Version de la respuesta (del formato XML usado en la respuesta).
113 std::string xml_version;
115 /// Código de respuesta.
118 /// Descripción de la respuesta.
119 std::string xml_description;
121 /// Contenido del mensaje XML.
122 std::string xml_contents;
124 /////////////////////////////////////////////////////////////////////
130 * Construye la respuesta XML dentro del mensaje HTTP.
139 virtual ~Response(void);
144 Response(const Code& code = OK, const std::string& desc = "");
149 Response(const std::string& contents, const std::string& desc = "",
150 const Code& code = OK);
153 * Obtiene la versión de la respuesta.
155 const std::string& get_version(void) const;
158 * Establece la versión de la respuesta.
160 * \param version_ Versión de la respuesta.
162 const std::string& set_version(const std::string& version_);
165 * Obtiene el cuerpo del mensaje.
167 const Code& get_code(void) const;
170 * Establece el código de respuesta.
172 * \param _code Código de respuesta nuevo.
174 const Code& set_code(const Code& code_);
177 * Obtiene la descripción de la respuesta.
179 const std::string& get_description(void) const;
182 * Establece la descripción de la respuesta.
184 * \param description_ Descripción de la respuesta.
186 const std::string& set_description(const std::string& description_);
189 * Obtiene el contenido del mensaje.
191 const std::string& get_contents(void) const;
194 * Establece el contenido del mensaje.
196 * \param contents_ Contenido del mensaje.
198 const std::string& set_contents(const std::string& contents_);
201 * Obtiene los datos de la respuesta HTTP desde un texto.
203 friend std::istream& operator>>(std::istream& is, Response& resp)
204 throw(HTTPResponse::Error, std::ios::failure, sockerr,
208 * Convierte la respuesta HTTP en texto.
210 friend std::ostream& operator<<(std::ostream& os,
211 const Response& resp);
219 #endif // PLAQUI_RESPONSE_H