Core/DBLayer: Add nicer api for SQLQueryHolders

This commit is contained in:
Shauren authored and Ovahlord committed 2020-08-01 15:37:20 +02:00
1 parent 040140b4ea
commit 6d4b396f7b
8 files changed
+52 -17

No files matched your search

+11 -9
View File
@@ -1124,13 +1124,7 @@ void WorldSession::ProcessQueryCallbacks()
{
_queryProcessor.ProcessReadyCallbacks();
_transactionCallbacks.ProcessReadyCallbacks();
if (_realmAccountLoginCallback.valid() && _realmAccountLoginCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready)
InitializeSessionCallback(static_cast<LoginDatabaseQueryHolder*>(_realmAccountLoginCallback.get()));
//! HandlePlayerLoginOpcode
if (_charLoginCallback.valid() && _charLoginCallback.wait_for(std::chrono::seconds(0)) == std::future_status::ready)
HandlePlayerLogin(reinterpret_cast<LoginQueryHolder*>(_charLoginCallback.get()));
_queryHolderProcessor.ProcessReadyCallbacks();
}
TransactionCallback& WorldSession::AddTransactionCallback(TransactionCallback&& callback)
@@ -1138,6 +1132,11 @@ TransactionCallback& WorldSession::AddTransactionCallback(TransactionCallback&&
return _transactionCallbacks.AddCallback(std::move(callback));
}
SQLQueryHolderCallback& WorldSession::AddQueryHolderCallback(SQLQueryHolderCallback&& callback)
{
return _queryHolderProcessor.AddCallback(std::move(callback));
}
void WorldSession::InitWarden(BigNumber* k, std::string const& os)
{
if (os == "Win")
@@ -1213,10 +1212,13 @@ void WorldSession::InitializeSession()
return;
}
_realmAccountLoginCallback = CharacterDatabase.DelayQueryHolder(realmHolder);
AddQueryHolderCallback(CharacterDatabase.DelayQueryHolder(realmHolder)).AfterComplete([this](SQLQueryHolderBase* holder)
{
InitializeSessionCallback(static_cast<AccountInfoQueryHolderPerRealm*>(holder));
});
}
void WorldSession::InitializeSessionCallback(LoginDatabaseQueryHolder* realmHolder)
void WorldSession::InitializeSessionCallback(CharacterDatabaseQueryHolder* realmHolder)
{
LoadAccountData(realmHolder->GetPreparedResult(AccountInfoQueryHolderPerRealm::GLOBAL_ACCOUNT_DATA), GLOBAL_CACHE_MASK);
LoadTutorialsData(realmHolder->GetPreparedResult(AccountInfoQueryHolderPerRealm::TUTORIALS));