diff options
Diffstat (limited to 'ACE/apps/JAWS/server/HTTP_Handler.h')
-rw-r--r-- | ACE/apps/JAWS/server/HTTP_Handler.h | 237 |
1 files changed, 0 insertions, 237 deletions
diff --git a/ACE/apps/JAWS/server/HTTP_Handler.h b/ACE/apps/JAWS/server/HTTP_Handler.h deleted file mode 100644 index c4c44799535..00000000000 --- a/ACE/apps/JAWS/server/HTTP_Handler.h +++ /dev/null @@ -1,237 +0,0 @@ -/* -*- c++ -*- */ - -//============================================================================= -/** - * @file HTTP_Handler.h - * - * $Id$ - * - * @author James Hu and Irfan Pyarali - */ -//============================================================================= - - -#ifndef HTTP_HANDLER_H -#define HTTP_HANDLER_H - -// = Forward declarations -class Message_Block; -class HTTP_Handler_Factory; - -#include "ace/Asynch_IO.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "HTTP_Request.h" -#include "HTTP_Response.h" -#include "IO.h" - -/** - * @class HTTP_Handler - * - * @brief This class is used to implement the HTTP protocol - * - * The HTTP_Handler class is a state based implementation of the - * HTTP protocol. Therefore, it can be used synchronously and - * asynchronously. It uses an abstract IO class to move between - * different HTTP protocol states. It is up to the IO class to - * decide on synchronous or asynchronous I/O. - */ -class HTTP_Handler : protected JAWS_IO_Handler -{ - // Friend I/O classes. Can call protected methods. - friend class JAWS_Synch_IO; - friend class JAWS_Synch_IO_No_Cache; - friend class JAWS_Asynch_IO; - - // Factories - friend class Asynch_HTTP_Handler_Factory; - friend class Synch_HTTP_Handler_Factory; - friend class No_Cache_Synch_HTTP_Handler_Factory; - -public: - /** - * The handler is initialized with a connection <handle> of a new - * client and any <initial_data> that came across. The - * <initial_data> block will be of MAX_REQUEST_SIZE and the number - * of bytes in <initial_data> can be found from - * <initial_data>.length () - */ - virtual void open (ACE_HANDLE handle, - ACE_Message_Block &initial_data); - -protected: - /// The constructor is passed the factory that created <this> and the - /// IO mechanism that the handler should use. - HTTP_Handler (JAWS_IO &io, - HTTP_Handler_Factory &factory); - - /// Destructor - virtual ~HTTP_Handler (void); - - /// This method is called by the framework when there is a timeout. - virtual void timeout (void); - - /** - * This is the termination state of the handler. After successful or - * unsuccessful completions, the handler will end up in this state - * (method). - */ - virtual void done (void); - - /// Request too long. - virtual void request_too_long (void); - - /// Reference to the creating factory. - HTTP_Handler_Factory &factory_; - -protected: - // = Completion methods inherited from <JAWS_IO_Handler>. - - virtual void read_complete (ACE_Message_Block &data); - virtual void read_error (void); - virtual void transmit_file_complete (void); - virtual void transmit_file_error (int result); - virtual void receive_file_complete (void); - virtual void receive_file_error (int result); - virtual void write_error (void); - virtual void confirmation_message_complete (void); - virtual void error_message_complete (void); - -public: - enum - { - MAX_SOCKBUFSIZE = 64 * 1024, - MAX_REQUEST_SIZE = 8192, - METHODSIZ = 10, - VERSIONSIZ = 10 - }; - -private: - /// This points to the request sent by the client - ACE_Message_Block *request_data_; - - /// I/O handle to the client - ACE_HANDLE handle_; - - HTTP_Request request_; - HTTP_Response response_; - - /// IO class used by the handler - JAWS_IO &io_; -}; - -/** - * @class HTTP_Handler_Factory - * - * @brief This class is used to create new HTTP handlers - * - * This is an abstract factory for creating new HTTP handlers. - */ -class HTTP_Handler_Factory -{ -public: - /// Destructor - virtual ~HTTP_Handler_Factory (void); - - /// This creates a new HTTP_Handler - virtual HTTP_Handler *create_http_handler (void) = 0; - - /** - * The HTTP handler will call this method from HTTP_Handler::done to - * tell the factory to reap up the handler as it is now done with - * the protocol - */ - virtual void destroy_http_handler (HTTP_Handler &handler, - JAWS_IO &io) = 0; -}; - -/** - * @class Synch_HTTP_Handler_Factory - * - * @brief This class is used to create new HTTP handlers that will use - * Synch IO - * - */ -class Synch_HTTP_Handler_Factory : public HTTP_Handler_Factory -{ -public: - /// This creates a new HTTP_Handler - HTTP_Handler *create_http_handler (void); - - /** - * The HTTP handler will call this method from HTTP_Handler::done to - * tell the factory to reap up the handler as it is now done with - * the protocol - */ - void destroy_http_handler (HTTP_Handler &handler, - JAWS_IO &io); -}; - -//--------------Added a factory for SYNCH IO without caching - -/** - * @class No_Cache_Synch_HTTP_Handler_Factory - * - * @brief This class is used to create new HTTP handlers that will use - * Synch IO without caching - * - */ -class No_Cache_Synch_HTTP_Handler_Factory : public HTTP_Handler_Factory -{ -public: - /// This creates a new HTTP_Handler - HTTP_Handler *create_http_handler (void); - - /** - * The HTTP handler will call this method from HTTP_Handler::done to - * tell the factory to reap up the handler as it is now done with - * the protocol - */ - void destroy_http_handler (HTTP_Handler &handler, - JAWS_IO &io); -}; - -//-------------- - -#if defined (ACE_HAS_WIN32_OVERLAPPED_IO) -/** - * @class Asynch_HTTP_Handler_Factory - * - * @brief This class is used to create new HTTP handlers that will use - * Asynchronous IO. This only works on Win32. - * - */ -class Asynch_HTTP_Handler_Factory : public HTTP_Handler_Factory, public ACE_Service_Handler -{ -public: - /** - * The HTTP handler will call this method from HTTP_Handler::done to - * tell the factory to reap up the handler as it is now done with - * the protocol - */ - void destroy_http_handler (HTTP_Handler &handler, - JAWS_IO &io); - - /** - * <open> is called by <ACE_Asynch_Acceptor> to initialize a new - * instance of ACE_Service_Handler that has been created after the a - * new connection is accepted. - * - * This will act as a creation point for new handlers. - */ - virtual void open (ACE_HANDLE handle, - ACE_Message_Block &message_block); - -private: - /** - * This method is private as users are not allowed to create new - * handlers. New handlers can only be created by the framework when - * new client connections arrive. - */ - HTTP_Handler *create_http_handler (void); -}; -#endif /* ACE_HAS_WIN32_OVERLAPPED_IO */ -#endif /* HTTP_HANDLER_H */ |