1 // ANNA - Anna is Not Nothingness Anymore //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
9 #ifndef anna_http_Handler_hpp
10 #define anna_http_Handler_hpp
12 #include <anna/core/mt/Mutex.hpp>
14 #include <anna/comm/Receiver.hpp>
31 Manejador de Respuestas y/o peticiones sobre protocolo HTTP.
33 class Handler : public comm::Receiver {
41 Trata la informacion contenida en el mensaje recibido. Si el mensaje recibido es un mensaje HTTP
42 valido se terminara llamando a uno de los metodos manejadores evRequest o evResponse, dependiendo
45 \param clientSocket Socket por el que se recibe la peticion, y por el que podriamos enviar la respuesta
46 en caso de ser necesario.
47 \param message Mensaje HTTP recibido.
49 void apply(comm::ClientSocket& clientSocket, const comm::Message& message) throw(RuntimeException);
54 \param name Nombre logico de este manejador.
56 Handler(const char* name) : comm::Receiver(name), a_response(NULL) {;}
59 Devuelve una instancia de http::Response que puede ser usada para responser a una peticion.
60 \return una instancia de http::Response que puede ser usada para responser a una peticion.
62 Response* allocateResponse() throw();
65 Metodo virtual que debemos sobreescribir para tratar las peticiones HTTP.
66 \param clientSocket Socket por el que se recibe la peticion, y por el que podriamos enviar la respuesta
67 en caso de ser necesario.
68 \param request Peticion HTTP a tratar.
70 virtual void evRequest(comm::ClientSocket& clientSocket, const Request& request) throw(RuntimeException) = 0;
73 Metodo virtual que debemos sobreescribir para tratar las respuestas HTTP.
74 \param clientSocket Socket por el que se recibe la respuesta.
75 \param response respuesta HTTP a tratar.
77 virtual void evResponse(comm::ClientSocket& clientSocket, const Response& response) throw(RuntimeException) = 0;