Owner-authorized source migration: 31 helper-only translation units were merged into their callers or existing inline headers; both build manifests updated. Includes the preserved source payload, Lua configuration matching wowdecomp, and exact malloca expansion without diagnostic pragmas. 449 native units compiled locally and 449 staged units compiled by the pinned server toolchain. No previously byte-matched function regressed. Compiler mapping diagnostics remain recorded as needs_cleanup, not accepted or peer-confirmed. Existing independent review records are preserved. README.md is intentionally unchanged.
256 lines
8.5 KiB
C++
256 lines
8.5 KiB
C++
#include "Contents/UserData/AccountLinkedUserDataLoadAsyncWork.h"
|
|
#include "Contents/UserData/AccountLinkedUserDataSaveAsyncWork.h"
|
|
#include "Contents/Async/AsyncWorkMgr.h"
|
|
#include "Contents/Async/AsyncWorkRecycleObjectPoolMgr.h"
|
|
#include "Contents/Party/ChangePartyMasterAsyncWork.h"
|
|
#include "Contents/UserData/CharacterLinkedUserDataLoadAsyncWork.h"
|
|
#include "Contents/UserData/CharacterLinkedUserDataSaveAsyncWork.h"
|
|
#include "Contents/Emblems/EmblemDataDownloadAsyncWork.h"
|
|
#include "Contents/Emblems/EmblemDataUploadAsyncWork.h"
|
|
#include "Contents/Party/LoadMyPartyAsyncWork.h"
|
|
#include "Contents/Party/LoadPartyInfoAsyncWork.h"
|
|
#include "Contents/Party/LoadPartyListAsyncWork.h"
|
|
#include "Contents/Store/MCStoreInfoBackupAsyncWork.h"
|
|
#include "Contents/Party/RegisterPartyAsyncWork.h"
|
|
#include "Contents/Party/StopRecruitingAsyncWork.h"
|
|
|
|
#include <new>
|
|
|
|
// STATIC: 0x0138968C
|
|
// GLOBAL: gl_24349
|
|
CAsyncWorkMgr* g_asyncWorkMgr;
|
|
|
|
// INLINED
|
|
CAsyncWorkMgr::CAsyncWorkMgr(std::uint32_t workers) : NAsyncWorkMgr(workers), m_ready(false), m_pools(nullptr) {
|
|
this->m_pools = new (std::nothrow) CAsyncWorkRecycleObjectPoolMgr;
|
|
|
|
if (this->m_pools) {
|
|
if (this->m_pools->Ready()) {
|
|
this->m_ready = true;
|
|
} else {
|
|
delete this->m_pools;
|
|
this->m_pools = nullptr;
|
|
}
|
|
}
|
|
}
|
|
|
|
// INLINED
|
|
CAsyncWorkMgr::~CAsyncWorkMgr() {
|
|
this->DestroyQueues();
|
|
delete this->m_pools;
|
|
this->m_pools = nullptr;
|
|
}
|
|
|
|
// OFFSET: 0x00573C50
|
|
// FUNCTION: fn_02497
|
|
bool CAsyncWorkMgr::Initialize(std::uint32_t workers) {
|
|
if (g_asyncWorkMgr) {
|
|
return false;
|
|
}
|
|
|
|
g_asyncWorkMgr = new (std::nothrow) CAsyncWorkMgr(workers);
|
|
|
|
if (!g_asyncWorkMgr) {
|
|
return false;
|
|
}
|
|
|
|
if (!g_asyncWorkMgr->m_ready) {
|
|
delete g_asyncWorkMgr;
|
|
g_asyncWorkMgr = nullptr;
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
// OFFSET: 0x00573D90
|
|
// FUNCTION: fn_02498
|
|
void CAsyncWorkMgr::Shutdown() {
|
|
if (g_asyncWorkMgr) {
|
|
delete g_asyncWorkMgr;
|
|
g_asyncWorkMgr = nullptr;
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x00573DB0
|
|
// FUNCTION: fn_02499
|
|
void CAsyncWorkMgr::LoadAccount(std::uint32_t accountId, std::string world, std::string url, AccountConfigLoad& context) {
|
|
NAsyncWorkPtr work(this->m_pools, "AccountLinkedUserData_Load");
|
|
|
|
if (work.Get()) {
|
|
static_cast<CAccountLinkedUserDataLoadAsyncWork*>(work.Get())->Bind(accountId, world, url, context);
|
|
this->Submit(work);
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x00573EC0
|
|
// FUNCTION: fn_02500
|
|
void CAsyncWorkMgr::SaveAccount(std::uint32_t accountId, std::string world, std::string url, std::string token, std::string data) {
|
|
NAsyncWorkPtr work(this->m_pools, "AccountLinkedUserData_Save");
|
|
|
|
if (work.Get()) {
|
|
static_cast<CAccountLinkedUserDataSaveAsyncWork*>(work.Get())->Bind(accountId, world, url, token, data);
|
|
this->Submit(work);
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x00574010
|
|
// FUNCTION: fn_02501
|
|
void CAsyncWorkMgr::ChangePartyMaster(
|
|
std::uint32_t accountId, std::uint32_t characterId, std::string characterName, std::uint32_t targetAccountId, std::uint32_t targetCharacterId,
|
|
std::string targetName, std::string world, std::string url, std::string token, WindowManagerWindows& windows
|
|
) {
|
|
NAsyncWorkPtr work(this->m_pools, "Change_PartyMaster");
|
|
|
|
if (work.Get()) {
|
|
static_cast<CChangePartyMasterAsyncWork*>(work.Get())
|
|
->Bind(accountId, characterId, characterName, targetAccountId, targetCharacterId, targetName, world, url, token, windows);
|
|
this->Submit(work);
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x00574190
|
|
// FUNCTION: fn_02502
|
|
void CAsyncWorkMgr::LoadCharacter(
|
|
std::uint32_t accountId, std::uint32_t characterId, std::string world, std::string url, std::string token, CharacterConfigLoad& context
|
|
) {
|
|
NAsyncWorkPtr work(this->m_pools, "CharacterLinkedUserData_Load");
|
|
|
|
if (work.Get()) {
|
|
static_cast<CCharacterLinkedUserDataLoadAsyncWork*>(work.Get())->Bind(accountId, characterId, world, url, token, context);
|
|
this->Submit(work);
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x005742D0
|
|
// FUNCTION: fn_02503
|
|
void CAsyncWorkMgr::SaveCharacter(std::uint32_t accountId, std::uint32_t characterId, std::string world, std::string url, std::string token, std::string data) {
|
|
NAsyncWorkPtr work(this->m_pools, "CharacterLinkedUserData_Save");
|
|
|
|
if (work.Get()) {
|
|
static_cast<CCharacterLinkedUserDataSaveAsyncWork*>(work.Get())->Bind(accountId, characterId, world, url, token, data);
|
|
this->Submit(work);
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x00574430
|
|
// FUNCTION: fn_02504
|
|
void CAsyncWorkMgr::DownloadEmblem(
|
|
std::string url, std::uint32_t accountId, std::string token, std::string world, std::uint32_t guildId, std::uint32_t version, CConnection& connection
|
|
) {
|
|
NAsyncWorkPtr work(this->m_pools, "Emblem_Download");
|
|
|
|
if (work.Get()) {
|
|
static_cast<CEmblemDataDownloadAsyncWork*>(work.Get())->Bind(url, accountId, token, world, guildId, version, connection);
|
|
this->Submit(work);
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x00574570
|
|
// FUNCTION: fn_02505
|
|
void CAsyncWorkMgr::UploadEmblem(
|
|
std::string url, std::uint32_t accountId, std::string token, std::string world, std::uint32_t guildId, std::string path, CEmblemDataMgr& owner,
|
|
EmblemUploadContext& context
|
|
) {
|
|
NAsyncWorkPtr work(this->m_pools, "Emblem_Upload");
|
|
|
|
if (work.Get()) {
|
|
static_cast<CEmblemDataUploadAsyncWork*>(work.Get())->Bind(url, accountId, token, world, guildId, path, owner, context);
|
|
this->Submit(work);
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x005746D0
|
|
// FUNCTION: fn_02506
|
|
void CAsyncWorkMgr::LoadMyParty(
|
|
std::uint32_t accountId, std::uint32_t characterId, std::string world, std::string url, std::string token, WindowManagerWindows& windows
|
|
) {
|
|
NAsyncWorkPtr work(this->m_pools, "MyParty_Load");
|
|
|
|
if (work.Get()) {
|
|
static_cast<CLoadMyPartyAsyncWork*>(work.Get())->Bind(accountId, characterId, world, url, token, windows);
|
|
this->Submit(work);
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x00574810
|
|
// FUNCTION: fn_02507
|
|
void CAsyncWorkMgr::LoadPartyInfo(
|
|
std::uint32_t accountId, std::uint32_t characterId, std::string world, std::string url, std::string token, std::uint32_t queryAccountId,
|
|
PartyInfoContext& context
|
|
) {
|
|
NAsyncWorkPtr work(this->m_pools, "PartyInfo_Load");
|
|
|
|
if (work.Get()) {
|
|
static_cast<CLoadPartyInfoAsyncWork*>(work.Get())->Bind(accountId, characterId, world, url, token, queryAccountId, context);
|
|
this->Submit(work);
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x00574950
|
|
// FUNCTION: fn_02508
|
|
void CAsyncWorkMgr::LoadPartyList(
|
|
std::uint32_t accountId, std::uint32_t characterId, std::string world, std::string url, std::string token, int search, CAdvenPartyInfo filter, int page,
|
|
WindowManagerWindows& windows
|
|
) {
|
|
NAsyncWorkPtr work(this->m_pools, "PartyList_Load");
|
|
|
|
if (work.Get()) {
|
|
static_cast<CLoadPartyListAsyncWork*>(work.Get())->Bind(accountId, characterId, world, url, token, filter, search, page, windows);
|
|
this->Submit(work);
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x00574B30
|
|
// FUNCTION: fn_02509
|
|
void CAsyncWorkMgr::LoadStore(
|
|
std::uint32_t accountId, std::uint32_t characterId, std::string world, std::string url, std::string token, int type, CMCStoreInfoBackup& owner,
|
|
StoreBackupContext& context
|
|
) {
|
|
NAsyncWorkPtr work(this->m_pools, "MerchantStoreInformation_Load");
|
|
|
|
if (work.Get()) {
|
|
static_cast<CMCStoreInfoBackupLoadAsyncWork*>(work.Get())->Bind(url, accountId, characterId, world, token, type, owner, context);
|
|
this->Submit(work);
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x00574C70
|
|
// FUNCTION: fn_02510
|
|
void CAsyncWorkMgr::SaveStore(
|
|
std::uint32_t accountId, std::uint32_t characterId, std::string world, std::string url, std::string token, std::string data, int type,
|
|
CMCStoreInfoBackup& owner, StoreBackupContext& context
|
|
) {
|
|
NAsyncWorkPtr work(this->m_pools, "MerchantStoreInformation_Save");
|
|
|
|
if (work.Get()) {
|
|
static_cast<CMCStoreInfoBackupSaveAsyncWork*>(work.Get())->Bind(url, accountId, characterId, world, token, data, type, owner, context);
|
|
this->Submit(work);
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x00574DD0
|
|
// FUNCTION: fn_02511
|
|
void CAsyncWorkMgr::RegisterParty(
|
|
std::uint32_t accountId, std::uint32_t characterId, std::string world, std::string url, std::string token, CAdvenPartyInfo info, RegisterPartyContext& context
|
|
) {
|
|
NAsyncWorkPtr work(this->m_pools, "Register_Party");
|
|
|
|
if (work.Get()) {
|
|
static_cast<CRegisterPartyAsyncWork*>(work.Get())->Bind(accountId, characterId, world, url, token, info, context);
|
|
this->Submit(work);
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x00574F40
|
|
// FUNCTION: fn_02512
|
|
void CAsyncWorkMgr::StopRecruiting(
|
|
std::uint32_t accountId, std::string world, std::string url, std::string token, std::uint32_t masterAccountId, StopRecruitingContext& context
|
|
) {
|
|
NAsyncWorkPtr work(this->m_pools, "Stop_Recruiting");
|
|
|
|
if (work.Get()) {
|
|
static_cast<CStopRecruitingAsyncWork*>(work.Get())->Bind(accountId, world, url, token, masterAccountId, context);
|
|
this->Submit(work);
|
|
}
|
|
}
|