aboutsummaryrefslogtreecommitdiff
path: root/Src/auth/Loginbox/downloadResult.h
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/auth/Loginbox/downloadResult.h
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/auth/Loginbox/downloadResult.h')
-rw-r--r--Src/auth/Loginbox/downloadResult.h110
1 files changed, 110 insertions, 0 deletions
diff --git a/Src/auth/Loginbox/downloadResult.h b/Src/auth/Loginbox/downloadResult.h
new file mode 100644
index 00000000..aa4e4c5e
--- /dev/null
+++ b/Src/auth/Loginbox/downloadResult.h
@@ -0,0 +1,110 @@
+#ifndef NULLSOFT_AUTH_LOGIN_DOWNLOAD_RESULT_HEADER
+#define NULLSOFT_AUTH_LOGIN_DOWNLOAD_RESULT_HEADER
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+#include <wtypes.h>
+#include "../dlmgr/api_downloadmanager.h"
+
+#define E_DWNLD_OK S_OK
+#define E_DWNLD_BUSY E_PENDING
+#define E_DWNLD_FAIL E_FAIL
+#define E_DWNLD_ABORT E_ABORT
+#define E_DWNLD_TIMEOUT HRESULT_FROM_WIN32(ERROR_TIMEOUT)
+#define E_DWNLD_CANT_CONNECT HRESULT_FROM_WIN32(ERROR_NOT_CONNECTED)
+#define E_DWNLD_WRITE_ERROR HRESULT_FROM_WIN32(ERROR_WRITE_FAULT)
+
+class LoginStatus;
+
+class LoginDownloadResult : public ifc_downloadManagerCallback
+{
+public:
+ typedef void (CALLBACK *Callback)(LoginDownloadResult *result, void *data);
+
+ typedef enum
+ {
+ stateMask = 0x00000FF00,
+ stateReady = 0x00000000,
+ stateInitializing = 0x00000100,
+ stateConnecting = 0x00000200,
+ stateReceiving = 0x00000300,
+ stateCompleted = 0x00000400,
+ stateAborting = 0x00000500,
+ } States;
+
+ typedef enum
+ {
+ typeMask = 0x0000000FF,
+ typeUnknown = 0x00000000,
+ typeImage = 0x00000001,
+ typeProviderList = 0x00000002,
+ } Types;
+
+ typedef enum
+ {
+ flagsMask = 0xFFFF0000,
+ flagUserAbort = 0x00010000,
+ } Flags;
+
+protected:
+ LoginDownloadResult(api_downloadManager *pManager, UINT uType, Callback fnCallback, void *pData, LoginStatus *pStatus);
+ ~LoginDownloadResult();
+
+public:
+ static HRESULT CreateInstance(api_downloadManager *pManager, UINT uType, Callback fnCallback, void *pData, LoginStatus *pStatus, LoginDownloadResult **instance);
+
+public:
+ /* Dispatchable */
+ size_t AddRef();
+ size_t Release();
+ int QueryInterface(GUID interface_guid, void **object);
+
+ HRESULT GetWaitHandle(HANDLE *handle);
+ HRESULT GetData(void **data);
+ HRESULT GetType(UINT *type);
+ HRESULT GetState(UINT *state);
+ HRESULT GetFile(LPCWSTR *ppszPath);
+
+ HRESULT CreateDownloadFileName(LPSTR pszBuffer, UINT cchBufferMax);
+ HRESULT GetUrl(LPSTR pszBuffer, UINT cchBufferMax);
+ HRESULT RequestAbort(BOOL fDrop);
+
+protected:
+ /* ifc_downloadManagerCallback */
+ void Event_DownloadFinish(DownloadToken token);
+ void Event_DownloadTick(DownloadToken token);
+ void Event_DownloadError(DownloadToken token, int errorCode);
+ void Event_DownloadCancel(DownloadToken token);
+ void Event_DownloadConnect(DownloadToken token);
+ void Event_DownloadInit(DownloadToken token);
+
+ void DownloadCompleted(int errorCode);
+ void SetState(UINT uState);
+ void SetType(UINT uType);
+ void SetFlags(UINT uFlags, UINT uMask);
+ void SetStatus();
+ void RemoveStatus();
+
+
+
+protected:
+ size_t ref;
+ UINT flags;
+ LPWSTR address;
+ INT result;
+ api_downloadManager *manager;
+ DownloadToken cookie;
+ HANDLE completed;
+ Callback callback;
+ void *data;
+ LoginStatus *status;
+ UINT statusCookie;
+ CRITICAL_SECTION lock;
+
+protected:
+ RECVS_DISPATCH;
+};
+
+#endif //NULLSOFT_AUTH_LOGINDOWNLOADER_HEADER \ No newline at end of file