📄 httpfsys.h
字号:
STDMETHOD(WriteReady) (THIS_ HX_RESULT status); STDMETHOD(Closed) (THIS_ HX_RESULT status); /* * IHXRequestHandler methods */ /************************************************************************ * Method: * IHXRequestHandler::SetRequest * Purpose: * Associates an IHXRequest with an object */ STDMETHOD(SetRequest) (THIS_ IHXRequest* /*IN*/ pRequest); /************************************************************************ * Method: * IHXRequestHandler::GetRequest * Purpose: * Gets the IHXRequest object associated with an object */ STDMETHOD(GetRequest) (THIS_ REF(IHXRequest*) /*OUT*/ pRequest); /************************** IHXTimeoutSettings ***************************/ /************************************************************************ * Method: * IHXTimeSettings::Get/SetConnnectionTimeout * Purpose: * Get/Set the connection timeout setting, in seconds */ STDMETHOD(GetConnectionTimeout) (THIS_ REF(UINT32) /*OUT*/ nSeconds); STDMETHOD(SetConnectionTimeout) (THIS_ UINT32 /*OUT*/ nSeconds); /************************************************************************ * Method: * IHXTimeSettings::Get/SetServerTimeout * Purpose: * Get/Set the server timeout setting, in seconds */ STDMETHOD(GetServerTimeout) (THIS_ REF(UINT32) /*OUT*/ nSeconds); STDMETHOD(SetServerTimeout) (THIS_ UINT32 /*OUT*/ nSeconds); /************************************************************************ * Method: * IHXHTTPRedirect::Init * Purpose: * Initialize the response object */ STDMETHOD(Init) (THIS_ IHXHTTPRedirectResponse* pRedirectResponse); /************************************************************************ * Method: * IHXHTTPRedirect::SetResponseObject * Purpose: * Initialize the response object w/o calling Init */ STDMETHOD(SetResponseObject) (THIS_ IHXHTTPRedirectResponse* pRedirectResponse); // IHXClientAuthResponse STDMETHODIMP ResponseReady ( HX_RESULT HX_RESULTStatus, IHXRequest* pIHXRequestResponse ); // Support for cache STDMETHOD_ (IHXBuffer*, CreateBufferFromValues) (THIS_ IHXValues /*IN*/ *pHeaderValues); STDMETHOD_ (IHXValues*, CreateValuesFromBuffer) (THIS_ IHXBuffer *pBuffer); STDMETHOD_ (void, CacheSupport_OpenFile) (THIS); STDMETHOD_ (void, CacheSupport_InitObject) (THIS); STDMETHOD_ (void, CacheSupport_ReadDone) (THIS); STDMETHOD_ (void, CacheSupport_HandleSuccess) (THIS_ HTTPResponseMessage* pMessage); STDMETHOD (ProcessCacheCompletions) (THIS_ BOOL bRedirected); // Support for autostreaming STDMETHOD_( void, SetDestinationFile) ( THIS_ const char *pFilename ); /* * IHXProxyAutoConfigCallback methods */ /************************************************************************ * Method: * IHXProxyAutoConfigCallback::GetProxyInfoDone * Purpose: */ STDMETHOD(GetProxyInfoDone) (THIS_ HX_RESULT status, char* pszProxyInfo);private: HX_RESULT _OpenFileExt (); HX_RESULT BeginGet (ULONG32 ulOffsetStart=0); const char* GetActualHost () const; const char* GetActualResource () const; HX_RESULT GetUserAgent (REF(IHXBuffer*) pBuffer); int GetActualPort () const; HX_RESULT ProcessPendingReads (void); void AddNoCacheHeader (); BOOL IsLiveStream (const char* pMimeType); HX_RESULT _SendAuthentication(IHXValues* pValues); HX_RESULT _HandleSuccess ( HTTPResponseMessage* pMessage, IHXBuffer* pBuffer, UINT32 ulHeaderLength ); HX_RESULT _HandleFail(UINT32 ulHTTPError); HX_RESULT _HandleUnAuthorized(HTTPResponseMessage* pMessage); HX_RESULT _HandleRedirect(HTTPResponseMessage* pMessage); HX_RESULT _EnsureThatWeAreReadingWisely(); HX_RESULT _HandleByteRangeSeek(ULONG32 ulSeekLocation); void CallReadDone(HX_RESULT status, IHXBuffer* pBuffer); // Support for cookie mangling HX_RESULT MangleAllSetCookies (IHXRequest* pRequest); HX_RESULT MangleSetCookie (IHXBuffer* pInput, REF(IHXBuffer*) pOutput); HX_RESULT StoreMangledCookie (char* pCookie); HX_RESULT UnmangleAllCookies (IHXRequest* pRequest); HX_RESULT UnmangleCookie (char* pCookie, UINT32 ulCookieLen, REF(IHXBuffer*) pDomain, REF(BOOL) bIsDomain, REF(IHXBuffer*) pPath); HX_RESULT CompareDomains (IHXBuffer* pURLHost, IHXBuffer* pTestDomain, BOOL bIsDomain); HX_RESULT ComparePaths (IHXBuffer* pURLPath, IHXBuffer* pTestPath); HX_RESULT GetHostAndPath (IHXRequest* pRequest, REF(IHXBuffer*) pHostStr, REF(IHXBuffer*) pPathStr); HX_RESULT DePerplexBuffer (IHXBuffer* pInput, REF(IHXBuffer*) pOutput); // Error reporting void ReportConnectionFailure (); void ReportConnectionTimeout (); void ReportServerTimeout (); void ReportDocumentMissing (); void ReportGeneralFailure (); HX_RESULT DecodeChunkedEncoding(HTTPChunkedEncoding*& pChunkedEncoding, const char* pChunk, int l); friend class HTTPFileObjCallback; friend class HTTPTCPResponse; HX_RESULT m_LastError; IHXCommonClassFactory* m_pCommonClassFactory; IHXPreferences* m_pPreferences; IHXScheduler* m_pScheduler; IHXRegistry* m_pRegistry; IHXErrorMessages* m_pErrorMessages; IHXHTTPRedirectResponse* m_pRedirectResponse; IHXCookies* m_pCookies; IHXCookies2* m_pCookies2; IHXProxyAutoConfig* m_pPAC; CHXSimpleList* m_pPACInfoList; LISTPOSITION m_PACInfoPosition; BOOL m_bOnServer; IUnknown* m_pContext; IHXValues* m_pOptions; IHXInterruptState* m_pInterruptState; #ifdef _MACINTOSH IHXBuffer* m_pReadDoneBuffer; HX_RESULT m_uReadDoneStatus; BOOL m_bReadDoneToBeProcessed;#endif BOOL m_bMimeResponsePending; IHXFileMimeMapperResponse* m_pMimeMapperResponse; BOOL m_bFileExistsResponsePending; IHXFileExistsResponse* m_pFileExistsResponse; BOOL m_bStatPending; IHXFileStatResponse* m_pFileStatResponse; BOOL m_bInitResponsePending; IHXFileResponse* m_pFileResponse; IHXFileSystemObject* m_pFileSystem; BOOL m_bTCPReadPending; HTTPTCPResponse* m_pTCPResponse; char* m_szBaseURL; char* m_pFilename; char* m_pPath; char* m_pHost; ULONG32 m_ulFlags; IHXRequest* m_pRequest; IHXValues* m_pRequestHeadersOrig; IHXValues* m_pParams; IHXBuffer* m_pLanguage; // suggested content lang BOOL m_bAuthorized; DECLARE_SMART_POINTER ( IHXClientAuthConversation ) m_spClientAuthConversationAuthenticator; HTTPFileObjCallback* m_pCallback; BOOL m_bSeekPending; BOOL m_bInitPending; BOOL m_bGetProxyInfoPending; BOOL m_bInitialized; BOOL m_bInDestructor; UINT16 m_uDataLength; char* m_pData; ULONG32 m_ulCurrentReadPosition;#if defined(HELIX_FEATURE_HTTP_GZIP) CDecoder* m_pDecoder;#else void* m_pDecoder;#endif CChunkyRes* m_pChunkyRes; BOOL m_bSupportsByteRanges; BOOL m_bDisableByteRanges; BOOL m_bExternalByteRangeRequests; ULONG32 m_uByteRangeSeekOffset; BOOL m_bByteRangeSeekPending; BOOL m_bCheckingWhetherByteRangeWorks; BOOL m_bServerPresumablyWorksWithByteRangeRequests; CHXSimpleList m_PendingReadList; static CHXSimpleList zm_pList; int m_nPort; UINT32 m_nRequestTime; // for time-outs waiting for a read to complete BOOL m_bSocketReadTimeout; UINT32 m_nConnTimeout; UINT32 m_nServerTimeout; BOOL m_bDisableConnectionTimeOut; BOOL m_bConnTimedOut; BOOL m_bMangleCookies; IHXBuffer* m_pMangledCookies; BOOL m_bShoutcast; BOOL m_bConvertFailedSeeksToLinear; /**************************/ /* These member variables need to go in a struct * if we wanna keep HTTP connection and related downloaded * stuff live after the http object is destroyed. * This is needed in the case when the first ff plug-in realizes * that the file is not of its type and we then load the next * related plug-in which then connects to the same URL. We do not * want to start downloading from scratch and instead want to use data * that had been dowloaded during the lifetime of earlier plug-in */ IHXTCPSocket* m_pSocket; BOOL m_bHTTP1_1; BOOL m_bConnectDone; BOOL m_bWriteDone; BOOL m_bReadHeaderDone; BOOL m_bReadContentsDone; BOOL m_bKnowContentSize; ULONG32 m_nContentSize; BOOL m_bEncoded; BOOL m_bChunkedEncoding; HTTPChunkedEncoding* m_pChunkedEncoding; ULONG32 m_nContentRead; UINT16 m_nTotalRequestSize; UINT16 m_nRequestWritten; ULONG32 m_nHeaderRead; CHXString m_strHost; CHXString m_strRequest; CHXString m_strResource; CHXString m_strMimeType; BOOL m_bUseProxy; CHXString m_strProxyHost; CHXString m_strProxyResource; int m_nProxyPort; UINT16 m_uMaxRecursionLevel; UINT16 m_uRecursionCount; BOOL m_bInReadDone; // Support for cache UINT32 m_ulCreateTime; UINT32 m_ulExpiryTime; UINT32 m_ulLastModTime; BOOL m_bCacheEnabled; UINT32 m_ulCacheMaxSize; IHXBuffer* m_pCacheFile; UINT32 m_ulCutOffDate; BOOL m_bCached; CCacheEntry* m_pCacheEntry; IHXBuffer* m_pReadBuffer; BOOL m_bReadPending; // Data available, ReadDone sked'd BOOL m_bMirroredServers; // Cache ignores leftmost label in domain // Support for saving streamed files BOOL m_bSaveToFile; CHXString m_SaveFileName; ULONG32 m_ulOffset; // HTTP POST support. UINT32 m_nPostDataSize; // Resume support. BOOL m_bPartialData; BOOL m_bUseHTTPS; BOOL m_bClosed; char* m_pLastHeader; UINT32 m_ulLastHeaderSize;};class HTTPFileObjCallback : public CUnknownIMP, public IHXCallback{ DECLARE_UNKNOWN(HTTPFileObjCallback)public: HTTPFileObjCallback(); void InitObject(CHTTPFileObject* pFileObject); /* * IHXCallback methods */ STDMETHOD(Func) (THIS);private: ~HTTPFileObjCallback(); PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME friend class CHTTPFileObject; CHTTPFileObject* m_HTTPFileObject; BOOL m_bCallbackPending; ULONG32 m_ulPendingCallbackID;};class HTTPTCPResponse : public CUnknownIMP, public IHXTCPResponse{ DECLARE_UNKNOWN(HTTPTCPResponse)public: HTTPTCPResponse(); ~HTTPTCPResponse(); void InitObject(CHTTPFileObject* pOwner); /* * IHXTCPResponse methods */ STDMETHOD(ConnectDone) (THIS_ HX_RESULT status); STDMETHOD(ReadDone) (THIS_ HX_RESULT status, IHXBuffer* pBuffer); STDMETHOD(WriteReady) (THIS_ HX_RESULT status); STDMETHOD(Closed) (THIS_ HX_RESULT status);protected: LONG32 m_lRefCount; CHTTPFileObject* m_pOwner; friend class CHTTPFileObject;};#endif // _HTTPFSYS_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -