/** * CRXProxy.h */ #ifndef __CRXPROXY_H__ #define __CRXPROXY_H__ #include "CRXException.h" #include "CRXSocket.h" #include "CRXHttpMessage.h" #include "CRXHttpRequest.h" #include "CRXHttpResponse.h" #include "CRXFilter.h" #define ERROR_PROXY -10000 #define ERROR_PROXY_FAILED_TO_RECEIVE_REQUEST ERROR_PROXY - 1 #define ERROR_PROXY_FAILED_TO_SEND_REQUEST ERROR_PROXY - 2 #define ERROR_PROXY_FAILED_TO_RECEIVE_RESPONSE ERROR_PROXY - 3 #define ERROR_PROXY_FAILED_TO_SEND_RESPONSE ERROR_PROXY - 4 #define ERROR_PROXY_FAILED_TO_CONNECT_TO_SERVER ERROR_PROXY - 5 #define ERROR_PROXY_FAILED_TO_SET_RESPONSE ERROR_PROXY - 6 class CRXProxy : public CRXException { private: bool mIsIntercepted; CRXSocket mClient; CRXSocket mServer; CRXHttpRequest mHttpRequest; CRXHttpResponse mHttpResponse; static CRXFilter mFilter; public: CRXProxy (void); ~CRXProxy (void); static CRXProxy * GetNewInstance (void); public: /* common utilities */ void ReleaseInstance (void); void SetClientSocket (const int aSocket); void Close (void); public: /* interface to filter */ void SetRequestFilter (const E_CRX_FILTER_REQUEST aType, const bool aIsMatched, const std::string aValue); void RemoveRequestFilter (const E_CRX_FILTER_REQUEST aType); bool CheckRequestFilter (const E_CRX_FILTER_REQUEST aType); public: /* for communication */ int Forward (void); void SetHttpRequest (const char * aHttpRequest); char * GetHttpRequest (char * aBuffer, const int aBufferSize) const; int GetHttpRequestLength (void) const; void SetHttpResponse (const char * aHttpResponse); char * GetHttpResponse (char * aBuffer, const int aBufferSize) const; int GetHttpResponseLength (void) const; int ReceiveRequest (void); int SendRequest (void); int ReceiveResponse (void); int SendResponse (void); }; #endif // #ifndef __CRXPROXY_H__