view include/handler/IHandler.hpp @ 41:7c8cd74023ce

Rework file layout, fix build, add README and SUPPORT
author Louis Opter <kalessin@kalessin.fr>
date Mon, 22 Mar 2010 02:08:24 +0100
parents src/include/handler/IHandler.hpp@ed739a5746d3
children dad671a5f028
line wrap: on
line source

#ifndef __ZIA_API_IHANDLER_HPP_
# define __ZIA_API_IHANDLER_HPP_

# include "http/ITransaction.hpp"

namespace   zia
{
    namespace   api
    {
        namespace   handler
        {
            /**
             * @brief Identify a connection point in the server.
             */
            enum    EHook
            {
                NetwordModifier,        /**< Hook to replace read/write/accept function. (INetworkHandler) */
                RequestHeaderModifier,  /**< Hook to modify the request's header.        (IHeaderHandler)  */
                RequestBodyModifier,    /**< Hook to modify the request's body.          (IBodyHandler)    */
                ResponseProcessor,      /**< Hook for content generation.                (IBodyHandler)    */
                ResponseHeaderModifier, /**< Hook to modify the response's header.       (IHeaderHandler)  */
                ResponseBodyModifier    /**< Hook to modify the response's body.         (IBodyHandler)    */
            };

            /**
             * @brief Identify the values that each handler can return.
             */
            enum    ECode
            {
                Ok,             /**< It works !*/
                Decline,        /**< No treatment performed */
                ClientError,    /**< Client error, module must have set the correct error code in the response headers. */
                ServerError     /**< Server error, module must have set the correct error code in the response headers. */
            };

            /**
             * @brief Interface which all handler have to respect.
             */
            class   IHandler
            {
            public:
                virtual ~IHandler(void) { }

                /**
                 * @brief Get where the hook has to be called.
                 *
                 * @return EHook which represent the location of where the hook
                 * should be added.
                 */
                virtual EHook   getHook(void) const = 0;
            };
        };
    };
};

#endif	/* ! __ZIA_API_IHANDLER_HPP_ */