aboutsummaryrefslogtreecommitdiff
path: root/Src/omBrowser/enumAsync.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/omBrowser/enumAsync.h')
-rw-r--r--Src/omBrowser/enumAsync.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/Src/omBrowser/enumAsync.h b/Src/omBrowser/enumAsync.h
new file mode 100644
index 00000000..bc513e11
--- /dev/null
+++ b/Src/omBrowser/enumAsync.h
@@ -0,0 +1,63 @@
+#ifndef NULLSOFT_WINAMP_OMSTORAGE_ASYNC_ENUMERATOR_WRAPPER_HEADER
+#define NULLSOFT_WINAMP_OMSTORAGE_ASYNC_ENUMERATOR_WRAPPER_HEADER
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+#include <wtypes.h>
+#include "./ifc_omstorageasync.h"
+
+class ifc_omservicehost;
+class ifc_omserviceenum;
+class ifc_omservice;
+class OmServiceList;
+
+class EnumAsyncWrapper : public ifc_omstorageasync
+{
+protected:
+ EnumAsyncWrapper(ifc_omserviceenum *enumerator);
+ ~EnumAsyncWrapper();
+
+public:
+ static HRESULT CreateInstance(ifc_omserviceenum *enumerator, EnumAsyncWrapper **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);
+
+public:
+ HRESULT SetData(void *data);
+ HRESULT SetCallback(AsyncCallback callback);
+ HRESULT GetCallback(AsyncCallback *callback);
+ HRESULT RequestAbort(BOOL fDrop);
+
+ HRESULT BeginEnumerate();
+ HRESULT Enumerate();
+
+ HRESULT GetResultCode();
+ HRESULT GetServiceList(ifc_omserviceenum **list);
+
+protected:
+ size_t ref;
+ ifc_omserviceenum *enumerator;
+ AsyncCallback userCallback;
+ void *userData;
+ HANDLE completed;
+ UINT state;
+ HRESULT resultCode;
+ CRITICAL_SECTION lock;
+ OmServiceList *serviceList;
+
+protected:
+ RECVS_DISPATCH;
+};
+
+#endif //NULLSOFT_WINAMP_OMSTORAGE_ASYNC_ENUMERATOR_WRAPPER_HEADER \ No newline at end of file