diff options
Diffstat (limited to 'Src/omBrowser/storageDwnld.h')
-rw-r--r-- | Src/omBrowser/storageDwnld.h | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/Src/omBrowser/storageDwnld.h b/Src/omBrowser/storageDwnld.h new file mode 100644 index 00000000..63c4ead6 --- /dev/null +++ b/Src/omBrowser/storageDwnld.h @@ -0,0 +1,84 @@ +#ifndef NULLSOFT_WINAMP_OMSTORAGE_DOWNLOADER_HEADER +#define NULLSOFT_WINAMP_OMSTORAGE_DOWNLOADER_HEADER + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +#include "./ifc_omstorageasync.h" +#include "../Components/wac_downloadManager/wac_downloadManager_api.h" +#include <bfc/multipatch.h> + +class ifc_omservicehost; + +#define MPIID_OMSTORAGEASYNC 10 +#define MPIID_DOWNLOADCALLBACK 20 + +class OmStorageDwnld : public MultiPatch<MPIID_OMSTORAGEASYNC, ifc_omstorageasync>, + public MultiPatch<MPIID_DOWNLOADCALLBACK, ifc_downloadManagerCallback> +{ +public: + typedef enum + { + flagEnableCompression = 0x00000001, + flagUserAbort = 0x00010000, + flagCompletedSynchronously = 0x00020000, + } Flags; + +protected: + OmStorageDwnld(api_downloadManager *downloadManager, BOOL enableCompression); + ~OmStorageDwnld(); + +public: + static HRESULT CreateInstance(api_downloadManager *downloadManager, BOOL enableCompression, OmStorageDwnld **instance); + +public: + /* Dispatchable */ + size_t AddRef(); + size_t Release(); + int QueryInterface(GUID interface_guid, void **object); + + /* ifc_omstorageasync */ + HRESULT GetState(UINT *state); + HRESULT GetWaitHandle(HANDLE *handle); + HRESULT GetData(void **data); + + /* ifc_downloadManagerCallback */ + void OnFinish(DownloadToken token); + void OnTick(DownloadToken token); + void OnError(DownloadToken token, int errorCode); + void OnCancel(DownloadToken token); + void OnConnect(DownloadToken token); + void OnInit(DownloadToken token); + + HRESULT GetResultCode(); + HRESULT GetBuffer(void **buffer, size_t *bufferSize); + + HRESULT SetData(void *data); + HRESULT SetCallback(AsyncCallback callback); + HRESULT GetCallback(AsyncCallback *callback); + + HRESULT RequestAbort(BOOL fDrop); + + HRESULT SetServiceHost(ifc_omservicehost *host); + HRESULT GetServiceHost(ifc_omservicehost **host); + +protected: + void DownloadCompleted(INT errorCode); + + size_t ref; + AsyncCallback userCallback; + void *userData; + HANDLE completed; + UINT flags; + UINT opState; + INT resultCode; + CRITICAL_SECTION lock; + DownloadToken cookie; + api_downloadManager *manager; + ifc_omservicehost *serviceHost; + + RECVS_MULTIPATCH; +}; + +#endif //NULLSOFT_WINAMP_OMSTORAGE_DOWNLOADER_HEADER
\ No newline at end of file |