00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef _SOCKETS_Ajp13Socket_H
00032 #define _SOCKETS_Ajp13Socket_H
00033
00034 #include "AjpBaseSocket.h"
00035 #include "HttpRequest.h"
00036 #include "IHttpServer.h"
00037 #include "HttpResponse.h"
00038
00039 #ifdef SOCKETS_NAMESPACE
00040 namespace SOCKETS_NAMESPACE {
00041 #endif
00042
00043
00044 class HttpResponse;
00045
00046 class Ajp13Socket : public AjpBaseSocket, public IHttpServer
00047 {
00048 public:
00049 Ajp13Socket(ISocketHandler& h);
00050
00051 void OnHeader( short id, short len );
00052 void OnPacket( const char *buf, size_t sz );
00053
00054
00055 void Respond(const HttpResponse& res);
00056
00057 void OnTransferLimit();
00058
00059 private:
00060 void ReceiveBody( const char *buf, size_t sz );
00061 void ReceiveForwardRequest( const char *buf, size_t sz );
00062 void ReceiveShutdown( const char *buf, size_t sz );
00063 void ReceivePing( const char *buf, size_t sz );
00064 void ReceiveCPing( const char *buf, size_t sz );
00065 void Execute();
00066
00067 size_t m_body_size_left;
00068 HttpRequest m_req;
00069 HttpResponse m_res;
00070 };
00071
00072
00073 #ifdef SOCKETS_NAMESPACE
00074 }
00075 #endif
00076
00077 #endif // _SOCKETS_Ajp13Socket_H
00078