X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/ffc9f02ea0544d4b1aa86e29afe12a2b4bace953..fb2d20d28eedbd1b0a98c05a03da5643924d04f9:/Server/include/plaqui/server/response.h?ds=sidebyside diff --git a/Server/include/plaqui/server/response.h b/Server/include/plaqui/server/response.h index 3acd2cd..d912002 100644 --- a/Server/include/plaqui/server/response.h +++ b/Server/include/plaqui/server/response.h @@ -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.