aboutsummaryrefslogtreecommitdiff
path: root/Src/omBrowser/storageDwnld.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/omBrowser/storageDwnld.h')
-rw-r--r--Src/omBrowser/storageDwnld.h84
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