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_document(void);
88 //virtual void on_end_document(void);
90 virtual void on_start_element(const std::string& name,
91 const AttributeMap& attrs);
93 virtual void on_end_element(const std::string& name);
95 virtual void on_characters(const std::string& chars);
97 //virtual void on_comment(const std::string& text);
99 //virtual void on_warning(const std::string& error);
101 //virtual void on_error(const std::string& error);
103 //virtual void on_fatal_error(const std::string& error);
105 //virtual void on_validity_error(const std::string& error);
107 //virtual void on_validity_warning(const std::string& error);
112 virtual ~Parser(void);
117 * \param resp Respuesta en la cual dejar los datos.
119 Parser(Response& resp);
123 /////////////////////////////////////////////////////////////////////
126 // FIXME private: hacer get/set y build tipo command.
130 /// Version de la respuesta (del formato XML usado en la respuesta).
131 std::string xml_version;
133 /// Código de respuesta.
136 /// Descripción de la respuesta.
137 std::string xml_description;
139 /// Cuerpo del mensaje XML.
140 std::string xml_body;
142 /////////////////////////////////////////////////////////////////////
150 virtual ~Response(void);
155 Response(const Code& code = OK, const std::string& desc = "");
160 Response(const std::string& body, const std::string& desc = "",
161 const Code& code = OK);
164 * Obtiene el cuerpo del mensaje.
166 //std::string body(void) const;
169 * Establece el cuerpo del mensaje.
171 * \param body_ Cuerpo del mensaje.
173 //const std::string& body(const std::string& body_);
176 * Obtiene el cuerpo del mensaje.
178 //Code code(void) const;
181 * Establece el código de respuesta.
183 * \param _code Código de respuesta nuevo.
185 //const Code& code(const Code& code_);
188 * Obtiene los datos de la respuesta HTTP desde un texto.
190 friend std::istream& operator>>(std::istream& is, Response& resp)
191 /*throw(HTTPResponse::Error, std::ios::failure, sockerr)*/;
194 * Convierte la respuesta HTTP en texto.
196 friend std::ostream& operator<<(std::ostream& os,
197 const Response& resp);
205 #endif // PLAQUI_RESPONSE_H