| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #ifndef NULLSOFT_AUTH_LOGINRESULT_WINAMPAUTH_HEADER
- #define NULLSOFT_AUTH_LOGINRESULT_WINAMPAUTH_HEADER
- #if defined(_MSC_VER) && (_MSC_VER >= 1020)
- #pragma once
- #endif
- #include "./loginResult.h"
- #include "../auth/ifc_authcallback.h"
- #include "../auth/api_auth.h"
- class LoginData;
- class LoginCredentials;
- class LoginDataCredentials;
- class LoginResultWinampAuth : public LoginResult,
- public ifc_authcallback
- {
- protected:
- LoginResultWinampAuth(api_auth *auth, LoginDataCredentials *pInput, Callback callback, void *user);
- ~LoginResultWinampAuth();
- public:
- static HRESULT CreateInstance(LoginData *input, Callback callback, void *user, LoginResultWinampAuth **instance);
- public:
- /* IUnknown */
- STDMETHOD(QueryInterface)(REFIID riid, PVOID *ppvObject);
- STDMETHOD_(ULONG, AddRef)(void);
- STDMETHOD_(ULONG, Release)(void);
- /* LoginResult */
- HRESULT GetWaitHandle(HANDLE *handle);
- HRESULT GetUser(void **pUser);
- HRESULT RequestAbort(BOOL fDrop);
- HRESULT IsCompleted();
- HRESULT IsAborting();
- HRESULT GetLoginData(LoginData **loginData);
- public:
- HRESULT GetResult(INT *authCode, LoginCredentials **credentials);
- protected:
- /* Dispatchable */
- size_t Wasabi_AddRef();
- size_t Wasabi_Release();
- int Wasabi_QueryInterface(GUID iid, void **object);
- /*ifc_authcallback*/
- int Event_AuthConnecting();
- int Event_AuthSending();
- int Event_AuthReceiving();
- int Event_AuthIdle();
- private:
- HRESULT Start();
- DWORD ThreadProc();
- HRESULT IsAbortingEx(UINT waitMs);
- LPWSTR MakeAuthParam(LPCWSTR pszInput, INT cchInput, INT min, INT max, BOOL removeSpaces, BOOL firstLetter, WORD typeMask, INT errorBase, INT *authError);
- LPWSTR GetUsername(LPCWSTR pszInput, INT *authError);
- LPWSTR GetPassword(LPCWSTR pszInput, INT *authError);
- LPWSTR GetPasscode(LPCWSTR pszInput, INT *authError);
- friend static DWORD WINAPI WinampAuth_ThreadProcCallback(void *param);
-
- protected:
- ULONG ref;
- LoginDataCredentials *input;
- Callback callback;
- void *user;
- api_auth *authApi;
- HANDLE thread;
- HANDLE abort;
- HANDLE completed;
- LoginCredentials *credentials;
- INT authCode;
- CRITICAL_SECTION lock;
- UINT statusCookie;
- protected:
- RECVS_DISPATCH;
- };
- #endif //NULLSOFT_AUTH_LOGINRESULT_WINAMPAUTH_HEADER
|