]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Server/include/plaqui/server/response.h
- Se completa un poco la doc del cliente.
[z.facultad/75.42/plaqui.git] / Server / include / plaqui / server / response.h
index 3acd2cdae9b9a2b1c57ccafdcdbe9b21c8c28f95..d912002184c9ddd72de2907aba31ddc240225e44 100644 (file)
@@ -46,20 +46,20 @@ namespace Server {
 
                        /// Código de respuesta.
                        typedef enum {
-                               OK = 0,
-                               UNKNOWN_ERROR,
-                               INVALID_TARGET,
-                               INVALID_COMMAND,
-                               ARGUMENT_MISSING,
-                               ALLREADY_EXISTS,
-                               CONNECTION_NOT_FOUND,
-                               TRANSMISSION_NOT_FOUND,
-                               PLANT_NOT_FOUND,
-                               ELEMENT_NOT_FOUND,
-                               ELEMENT_INPUT_NOT_FOUND,
-                               ERROR_STARTING_TRANSMISSION,
-                               ERROR_GETING_PLANT_XML,
-                               ERROR_CHANGING_ELEMENT_INPUT
+                               OK,                ///< Comando ejecutado con éxito.
+                               UNKNOWN_ERROR,      ///< Error desconocido.
+                               INVALID_TARGET,      ///< Destino del comando inválido.
+                               INVALID_COMMAND,      ///< Comando inválido para el destino.
+                               ARGUMENT_MISSING,      ///< Faltan argumentos para el comando.
+                               ALLREADY_EXISTS,        ///< Ya existe la transmisión.
+                               CONNECTION_NOT_FOUND,    ///< Conexión no encontrada.
+                               TRANSMISSION_NOT_FOUND,   ///< Transmisión no encontrada.
+                               PLANT_NOT_FOUND,           ///< Planta no encontrada.
+                               ELEMENT_NOT_FOUND,          ///< Elemento no encontrado.
+                               ELEMENT_INPUT_NOT_FOUND,     ///< No existe la entrada para el elemento.
+                               ERROR_STARTING_TRANSMISSION, ///< No se pudo empezar la transmisión.
+                               ERROR_GETING_PLANT_XML,      ///< No se pudo obtener el XML de la planta.
+                               ERROR_CHANGING_ELEMENT_INPUT ///< No se pudo cambiar la entrada del elemento.
                        } Code;
 
                private:
@@ -83,10 +83,6 @@ namespace Server {
 
                                protected:
 
-                                       //virtual void on_start_document(void);
-
-                                       //virtual void on_end_document(void);
-
                                        virtual void on_start_element(const std::string& name,
                                                        const AttributeMap& attrs);
 
@@ -94,18 +90,6 @@ namespace Server {
 
                                        virtual void on_characters(const std::string& chars);
 
-                                       //virtual void on_comment(const std::string& text);
-
-                                       //virtual void on_warning(const std::string& error);
-
-                                       //virtual void on_error(const std::string& error);
-
-                                       //virtual void on_fatal_error(const std::string& error);
-
-                                       //virtual void on_validity_error(const std::string& error);
-
-                                       //virtual void on_validity_warning(const std::string& error);
-
                                public:
 
                                        /// Destructor.
@@ -123,9 +107,7 @@ namespace Server {
                /////////////////////////////////////////////////////////////////////
                // Atributos.
 
-               // FIXME private: hacer get/set y build tipo command.
-
-               public:
+               private:
 
                        /// Version de la respuesta (del formato XML usado en la respuesta).
                        std::string xml_version;
@@ -136,12 +118,19 @@ namespace Server {
                        /// Descripción de la respuesta.
                        std::string xml_description;
 
-                       /// Cuerpo del mensaje XML.
-                       std::string xml_body;
+                       /// Contenido del mensaje XML.
+                       std::string xml_contents;
 
                /////////////////////////////////////////////////////////////////////
                // Métodos.
 
+               private:
+
+                       /**
+                        * Construye la respuesta XML dentro del mensaje HTTP.
+                        */
+                       void build(void);
+
                public:
 
                        /**
@@ -157,38 +146,63 @@ namespace Server {
                        /**
                         * Constructor.
                         */
-                       Response(const std::string& body, const std::string& desc = "",
+                       Response(const std::string& contents, const std::string& desc = "",
                                        const Code& code = OK);
 
                        /**
-                        * Obtiene el cuerpo del mensaje.
+                        * Obtiene la versión de la respuesta.
                         */
-                       //std::string body(void) const;
+                       const std::string& get_version(void) const;
 
                        /**
-                        * Establece el cuerpo del mensaje.
+                        * Establece la versión de la respuesta.
                         *
-                        * \param body_ Cuerpo del mensaje.
+                        * \param version_ Versión de la respuesta.
                         */
-                       //const std::string& body(const std::string& body_);
+                       const std::string& set_version(const std::string& version_);
 
                        /**
                         * Obtiene el cuerpo del mensaje.
                         */
-                       //Code code(void) const;
+                       const Code& get_code(void) const;
 
                        /**
                         * Establece el código de respuesta.
                         *
                         * \param _code Código de respuesta nuevo.
                         */
-                       //const Code& code(const Code& code_);
+                       const Code& set_code(const Code& code_);
+
+                       /**
+                        * Obtiene la descripción de la respuesta.
+                        */
+                       const std::string& get_description(void) const;
+
+                       /**
+                        * Establece la descripción de la respuesta.
+                        *
+                        * \param description_ Descripción de la respuesta.
+                        */
+                       const std::string& set_description(const std::string& description_);
+
+                       /**
+                        * Obtiene el contenido del mensaje.
+                        */
+                       const std::string& get_contents(void) const;
+
+                       /**
+                        * Establece el contenido del mensaje.
+                        *
+                        * \param contents_ Contenido del mensaje.
+                        */
+                       const std::string& set_contents(const std::string& contents_);
 
                        /**
                         * Obtiene los datos de la respuesta HTTP desde un texto.
                         */
                        friend std::istream& operator>>(std::istream& is, Response& resp)
-                               /*throw(HTTPResponse::Error, std::ios::failure, sockerr)*/;
+                               throw(HTTPResponse::Error, std::ios::failure, sockerr,
+                                               xmlpp::parse_error);
 
                        /**
                         * Convierte la respuesta HTTP en texto.