rodecomp/Source/Contents/Async/AsyncWorkMgr.cpp
ragnarok-clanker e168b4e4a6 Restore translation-unit ownership and publish verified source corrections
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.
2026-10-25 15:42:21 +00:00

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);
}
}