rodecomp/Source/Contents/AsyncWorkRecycleObjectPoolMgr.cpp
2026-10-24 00:35:19 +00:00

63 lines
2.8 KiB
C++

#include "Contents/AccountLinkedUserDataLoadAsyncWork.h"
#include "Contents/AccountLinkedUserDataSaveAsyncWork.h"
#include "Contents/AsyncWorkRecycleObjectPoolMgr.h"
#include "Contents/ChangePartyMasterAsyncWork.h"
#include "Contents/CharacterLinkedUserDataLoadAsyncWork.h"
#include "Contents/CharacterLinkedUserDataSaveAsyncWork.h"
#include "Contents/EmblemDataDownloadAsyncWork.h"
#include "Contents/EmblemDataUploadAsyncWork.h"
#include "Contents/LoadMyPartyAsyncWork.h"
#include "Contents/LoadPartyInfoAsyncWork.h"
#include "Contents/LoadPartyListAsyncWork.h"
#include "Contents/MCStoreInfoBackupAsyncWork.h"
#include "Contents/RegisterPartyAsyncWork.h"
#include "Contents/StopRecruitingAsyncWork.h"
#include <memory>
#include <new>
// OFFSET: 0x00576660
CAsyncWorkRecycleObjectPoolMgr::CAsyncWorkRecycleObjectPoolMgr() : m_registered(false) {
if (this->RegisterPools()) {
this->m_registered = true;
}
}
// OFFSET: 0x00578230
// FUNCTION: fn_02550
CAsyncWorkRecycleObjectPoolMgr::~CAsyncWorkRecycleObjectPoolMgr() {
for (const auto& entry : this->m_pools) {
delete entry.second;
}
}
// OFFSET: 0x00578F30
// FUNCTION: fn_02566
bool CAsyncWorkRecycleObjectPoolMgr::RegisterPools() {
// The original inserts all fourteen owning pointers, including null on
// nothrow allocation failure. Duplicate keys fail registration, not null pools.
const auto insert = [&]<class T>(const char* name) {
std::unique_ptr<NRecycleObjectPoolInter> pool(new (std::nothrow) NRecycleObjectPool<T>(2));
if (!this->m_pools.emplace(name, pool.get()).second) {
return false;
}
pool.release();
return true;
};
return insert.operator()<CAccountLinkedUserDataLoadAsyncWork>("AccountLinkedUserData_Load") &&
insert.operator()<CAccountLinkedUserDataSaveAsyncWork>("AccountLinkedUserData_Save") &&
insert.operator()<CCharacterLinkedUserDataLoadAsyncWork>("CharacterLinkedUserData_Load") &&
insert.operator()<CCharacterLinkedUserDataSaveAsyncWork>("CharacterLinkedUserData_Save") &&
insert.operator()<CEmblemDataUploadAsyncWork>("Emblem_Upload") &&
insert.operator()<CEmblemDataDownloadAsyncWork>("Emblem_Download") &&
insert.operator()<CMCStoreInfoBackupLoadAsyncWork>("MerchantStoreInformation_Load") &&
insert.operator()<CMCStoreInfoBackupSaveAsyncWork>("MerchantStoreInformation_Save") &&
insert.operator()<CLoadPartyListAsyncWork>("PartyList_Load") &&
insert.operator()<CLoadMyPartyAsyncWork>("MyParty_Load") &&
insert.operator()<CRegisterPartyAsyncWork>("Register_Party") &&
insert.operator()<CStopRecruitingAsyncWork>("Stop_Recruiting") &&
insert.operator()<CChangePartyMasterAsyncWork>("Change_PartyMaster") &&
insert.operator()<CLoadPartyInfoAsyncWork>("PartyInfo_Load");
}