Files
ARMSX2/common/HTTPDownloaderWinHTTP.h
T

41 lines
1017 B
C++
Raw Normal View History

// SPDX-FileCopyrightText: 2002-2026 PCSX2 Dev Team
2024-07-30 13:42:36 +02:00
// SPDX-License-Identifier: GPL-3.0+
2022-04-18 20:07:08 +10:00
#pragma once
#include "common/HTTPDownloader.h"
#include "common/RedtapeWindows.h"
#include <winhttp.h>
2023-11-06 23:23:44 +10:00
class HTTPDownloaderWinHttp final : public HTTPDownloader
2022-04-18 20:07:08 +10:00
{
2023-11-06 23:23:44 +10:00
public:
HTTPDownloaderWinHttp();
~HTTPDownloaderWinHttp() override;
bool Initialize(std::string user_agent);
2023-11-06 23:23:44 +10:00
protected:
Request* InternalCreateRequest() override;
void InternalPollRequests() override;
bool StartRequest(HTTPDownloader::Request* request) override;
void CloseRequest(HTTPDownloader::Request* request) override;
private:
struct Request : HTTPDownloader::Request
2022-04-18 20:07:08 +10:00
{
2023-11-06 23:23:44 +10:00
std::wstring object_name;
HINTERNET hConnection = NULL;
HINTERNET hRequest = NULL;
u32 io_position = 0;
2022-04-18 20:07:08 +10:00
};
2023-11-06 23:23:44 +10:00
static void CALLBACK HTTPStatusCallback(HINTERNET hInternet, DWORD_PTR dwContext, DWORD dwInternetStatus,
LPVOID lpvStatusInformation, DWORD dwStatusInformationLength);
static bool CheckCancelled(Request* request);
2023-11-06 23:23:44 +10:00
HINTERNET m_hSession = NULL;
};