mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-23 13:46:24 +00:00
feat(Core/Database): port TrinityCore database API (#5611)
This commit is contained in:
@@ -35,6 +35,7 @@
|
||||
#include "World.h"
|
||||
#include "WorldPacket.h"
|
||||
#include "WorldSession.h"
|
||||
#include "QueryHolder.h"
|
||||
#include "zlib.h"
|
||||
|
||||
#ifdef ELUNA
|
||||
@@ -139,8 +140,6 @@ WorldSession::WorldSession(uint32 id, WorldSocket* sock, AccountTypes sec, uint8
|
||||
ResetTimeOutTime(false);
|
||||
LoginDatabase.PExecute("UPDATE account SET online = 1 WHERE id = %u;", GetAccountId());
|
||||
}
|
||||
|
||||
InitializeQueryCallbackParameters();
|
||||
}
|
||||
|
||||
/// WorldSession destructor
|
||||
@@ -569,7 +568,7 @@ void WorldSession::LogoutPlayer(bool save)
|
||||
{
|
||||
if (sWorld->getBoolConfig(CONFIG_BATTLEGROUND_TRACK_DESERTERS))
|
||||
{
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_DESERTER_TRACK);
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_DESERTER_TRACK);
|
||||
stmt->setUInt32(0, _player->GetGUID().GetCounter());
|
||||
stmt->setUInt8(1, BG_DESERTION_TYPE_INVITE_LOGOUT);
|
||||
CharacterDatabase.Execute(stmt);
|
||||
@@ -668,7 +667,7 @@ void WorldSession::LogoutPlayer(bool save)
|
||||
LOG_DEBUG("network", "SESSION: Sent SMSG_LOGOUT_COMPLETE Message");
|
||||
|
||||
//! Since each account can only have one online character at any given time, ensure all characters for active account are marked as offline
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ACCOUNT_ONLINE);
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ACCOUNT_ONLINE);
|
||||
stmt->setUInt32(0, GetAccountId());
|
||||
CharacterDatabase.Execute(stmt);
|
||||
}
|
||||
@@ -772,7 +771,7 @@ void WorldSession::SendAuthWaitQue(uint32 position)
|
||||
|
||||
void WorldSession::LoadGlobalAccountData()
|
||||
{
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_ACCOUNT_DATA);
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_ACCOUNT_DATA);
|
||||
stmt->setUInt32(0, GetAccountId());
|
||||
LoadAccountData(CharacterDatabase.Query(stmt), GLOBAL_CACHE_MASK);
|
||||
}
|
||||
@@ -810,7 +809,7 @@ void WorldSession::LoadAccountData(PreparedQueryResult result, uint32 mask)
|
||||
void WorldSession::SetAccountData(AccountDataType type, time_t tm, std::string const& data)
|
||||
{
|
||||
uint32 id = 0;
|
||||
uint32 index = 0;
|
||||
CharacterDatabaseStatements index;
|
||||
if ((1 << type) & GLOBAL_CACHE_MASK)
|
||||
{
|
||||
id = GetAccountId();
|
||||
@@ -826,7 +825,7 @@ void WorldSession::SetAccountData(AccountDataType type, time_t tm, std::string c
|
||||
index = CHAR_REP_PLAYER_ACCOUNT_DATA;
|
||||
}
|
||||
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(index);
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(index);
|
||||
stmt->setUInt32(0, id);
|
||||
stmt->setUInt8(1, type);
|
||||
stmt->setUInt32(2, uint32(tm));
|
||||
@@ -853,7 +852,7 @@ void WorldSession::LoadTutorialsData()
|
||||
{
|
||||
memset(m_Tutorials, 0, sizeof(uint32) * MAX_ACCOUNT_TUTORIAL_VALUES);
|
||||
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_TUTORIALS);
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_TUTORIALS);
|
||||
stmt->setUInt32(0, GetAccountId());
|
||||
if (PreparedQueryResult result = CharacterDatabase.Query(stmt))
|
||||
for (uint8 i = 0; i < MAX_ACCOUNT_TUTORIAL_VALUES; ++i)
|
||||
@@ -870,12 +869,12 @@ void WorldSession::SendTutorialsData()
|
||||
SendPacket(&data);
|
||||
}
|
||||
|
||||
void WorldSession::SaveTutorialsData(SQLTransaction& trans)
|
||||
void WorldSession::SaveTutorialsData(CharacterDatabaseTransaction trans)
|
||||
{
|
||||
if (!m_TutorialsChanged)
|
||||
return;
|
||||
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_HAS_TUTORIALS);
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_HAS_TUTORIALS);
|
||||
stmt->setUInt32(0, GetAccountId());
|
||||
bool hasTutorials = bool(CharacterDatabase.Query(stmt));
|
||||
|
||||
@@ -1198,181 +1197,21 @@ void WorldSession::SetPlayer(Player* player)
|
||||
m_GUIDLow = _player->GetGUID().GetCounter();
|
||||
}
|
||||
|
||||
void WorldSession::InitializeQueryCallbackParameters()
|
||||
{
|
||||
// Callback parameters that have pointers in them should be properly
|
||||
// initialized to nullptr here.
|
||||
_charCreateCallback.SetParam(nullptr);
|
||||
_loadPetFromDBFirstCallback.SetFirstParam(0);
|
||||
_loadPetFromDBFirstCallback.SetSecondParam(nullptr);
|
||||
}
|
||||
|
||||
void WorldSession::ProcessQueryCallbacks()
|
||||
{
|
||||
ProcessQueryCallbackPlayer();
|
||||
ProcessQueryCallbackPet();
|
||||
ProcessQueryCallbackLogin();
|
||||
_queryProcessor.ProcessReadyCallbacks();
|
||||
_transactionCallbacks.ProcessReadyCallbacks();
|
||||
_queryHolderProcessor.ProcessReadyCallbacks();
|
||||
}
|
||||
|
||||
void WorldSession::ProcessQueryCallbackPlayer()
|
||||
TransactionCallback& WorldSession::AddTransactionCallback(TransactionCallback&& callback)
|
||||
{
|
||||
PreparedQueryResult result;
|
||||
|
||||
//- HandleCharRenameOpcode
|
||||
if (_charRenameCallback.IsReady())
|
||||
{
|
||||
std::string param = _charRenameCallback.GetParam();
|
||||
_charRenameCallback.GetResult(result);
|
||||
HandleChangePlayerNameOpcodeCallBack(result, param);
|
||||
_charRenameCallback.FreeResult();
|
||||
}
|
||||
|
||||
//- HandleOpenItemOpcode
|
||||
if (_openWrappedItemCallback.IsReady())
|
||||
{
|
||||
uint8 bagIndex = _openWrappedItemCallback.GetFirstParam();
|
||||
uint8 slot = _openWrappedItemCallback.GetSecondParam();
|
||||
ObjectGuid::LowType itemLowGUID = _openWrappedItemCallback.GetThirdParam();
|
||||
_openWrappedItemCallback.GetResult(result);
|
||||
HandleOpenWrappedItemCallback(result, bagIndex, slot, itemLowGUID);
|
||||
_openWrappedItemCallback.FreeResult();
|
||||
}
|
||||
|
||||
//- Player - ActivateSpec
|
||||
if (_loadActionsSwitchSpecCallback.ready())
|
||||
{
|
||||
_loadActionsSwitchSpecCallback.get(result);
|
||||
HandleLoadActionsSwitchSpec(result);
|
||||
_loadActionsSwitchSpecCallback.cancel();
|
||||
}
|
||||
return _transactionCallbacks.AddCallback(std::move(callback));
|
||||
}
|
||||
|
||||
void WorldSession::ProcessQueryCallbackPet()
|
||||
SQLQueryHolderCallback& WorldSession::AddQueryHolderCallback(SQLQueryHolderCallback&& callback)
|
||||
{
|
||||
PreparedQueryResult result;
|
||||
|
||||
//- SendStabledPet
|
||||
if (_sendStabledPetCallback.IsReady())
|
||||
{
|
||||
ObjectGuid param = _sendStabledPetCallback.GetParam();
|
||||
_sendStabledPetCallback.GetResult(result);
|
||||
SendStablePetCallback(result, param);
|
||||
_sendStabledPetCallback.FreeResult();
|
||||
return;
|
||||
}
|
||||
|
||||
//- HandleStablePet
|
||||
if (_stablePetCallback.ready())
|
||||
{
|
||||
_stablePetCallback.get(result);
|
||||
HandleStablePetCallback(result);
|
||||
_stablePetCallback.cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
//- HandleUnstablePet
|
||||
if (_unstablePetCallback.IsReady())
|
||||
{
|
||||
uint32 param = _unstablePetCallback.GetParam();
|
||||
_unstablePetCallback.GetResult(result);
|
||||
HandleUnstablePetCallback(result, param);
|
||||
_unstablePetCallback.FreeResult();
|
||||
return;
|
||||
}
|
||||
|
||||
//- HandleStableSwapPet
|
||||
if (_stableSwapCallback.IsReady())
|
||||
{
|
||||
uint32 param = _stableSwapCallback.GetParam();
|
||||
_stableSwapCallback.GetResult(result);
|
||||
HandleStableSwapPetCallback(result, param);
|
||||
_stableSwapCallback.FreeResult();
|
||||
return;
|
||||
}
|
||||
|
||||
//- LoadPetFromDB first part
|
||||
if (_loadPetFromDBFirstCallback.IsReady())
|
||||
{
|
||||
Player* player = GetPlayer();
|
||||
if (!player)
|
||||
{
|
||||
if (AsynchPetSummon* info = _loadPetFromDBFirstCallback.GetSecondParam())
|
||||
delete info;
|
||||
_loadPetFromDBFirstCallback.Reset();
|
||||
return;
|
||||
}
|
||||
// process only if player is in world (teleport crashes?)
|
||||
// otherwise wait with result till he logs in
|
||||
if (player->IsInWorld())
|
||||
{
|
||||
uint8 asynchLoadType = _loadPetFromDBFirstCallback.GetFirstParam();
|
||||
_loadPetFromDBFirstCallback.GetResult(result);
|
||||
|
||||
uint8 loadResult = HandleLoadPetFromDBFirstCallback(result, asynchLoadType);
|
||||
if (loadResult != PET_LOAD_OK)
|
||||
Pet::HandleAsynchLoadFailed(_loadPetFromDBFirstCallback.GetSecondParam(), player, asynchLoadType, loadResult);
|
||||
|
||||
if (AsynchPetSummon* info = _loadPetFromDBFirstCallback.GetSecondParam())
|
||||
delete info;
|
||||
_loadPetFromDBFirstCallback.Reset();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
//- LoadPetFromDB second part
|
||||
if (_loadPetFromDBSecondCallback.ready())
|
||||
{
|
||||
Player* player = GetPlayer();
|
||||
if (!player)
|
||||
{
|
||||
SQLQueryHolder* param;
|
||||
_loadPetFromDBSecondCallback.get(param);
|
||||
delete param;
|
||||
_loadPetFromDBSecondCallback.cancel();
|
||||
}
|
||||
else if (!player->IsInWorld())
|
||||
{
|
||||
// wait
|
||||
}
|
||||
else
|
||||
{
|
||||
SQLQueryHolder* param;
|
||||
_loadPetFromDBSecondCallback.get(param);
|
||||
HandleLoadPetFromDBSecondCallback((LoadPetFromDBQueryHolder*)param);
|
||||
delete param;
|
||||
_loadPetFromDBSecondCallback.cancel();
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void WorldSession::ProcessQueryCallbackLogin()
|
||||
{
|
||||
PreparedQueryResult result;
|
||||
|
||||
//! HandleCharEnumOpcode
|
||||
if (_charEnumCallback.ready())
|
||||
{
|
||||
_charEnumCallback.get(result);
|
||||
HandleCharEnum(result);
|
||||
_charEnumCallback.cancel();
|
||||
}
|
||||
|
||||
if (_charCreateCallback.IsReady())
|
||||
{
|
||||
_charCreateCallback.GetResult(result);
|
||||
HandleCharCreateCallback(result, _charCreateCallback.GetParam());
|
||||
// Don't call FreeResult() here, the callback handler will do that depending on the events in the callback chain
|
||||
}
|
||||
|
||||
//! HandlePlayerLoginOpcode
|
||||
if (_charLoginCallback.ready())
|
||||
{
|
||||
SQLQueryHolder* param;
|
||||
_charLoginCallback.get(param);
|
||||
HandlePlayerLoginFromDB((LoginQueryHolder*)param);
|
||||
_charLoginCallback.cancel();
|
||||
}
|
||||
return _queryHolderProcessor.AddCallback(std::move(callback));
|
||||
}
|
||||
|
||||
void WorldSession::InitWarden(SessionKey const& k, std::string const& os)
|
||||
|
||||
@@ -112,6 +112,12 @@ enum ChatRestrictionType
|
||||
ERR_YELL_RESTRICTED = 3
|
||||
};
|
||||
|
||||
enum DeclinedNameResult
|
||||
{
|
||||
DECLINED_NAMES_RESULT_SUCCESS = 0,
|
||||
DECLINED_NAMES_RESULT_ERROR = 1
|
||||
};
|
||||
|
||||
enum CharterTypes
|
||||
{
|
||||
GUILD_CHARTER_TYPE = 9,
|
||||
@@ -165,29 +171,53 @@ class CharacterCreateInfo
|
||||
friend class Player;
|
||||
|
||||
protected:
|
||||
CharacterCreateInfo(std::string name, uint8 race, uint8 cclass, uint8 gender, uint8 skin, uint8 face, uint8 hairStyle, uint8 hairColor, uint8 facialHair, uint8 outfitId,
|
||||
WorldPacket& data) : Name(std::move(name)), Race(race), Class(cclass), Gender(gender), Skin(skin), Face(face), HairStyle(hairStyle), HairColor(hairColor), FacialHair(facialHair),
|
||||
OutfitId(outfitId), Data(data), CharCount(0)
|
||||
{}
|
||||
|
||||
/// User specified variables
|
||||
std::string Name;
|
||||
uint8 Race;
|
||||
uint8 Class;
|
||||
uint8 Gender;
|
||||
uint8 Skin;
|
||||
uint8 Face;
|
||||
uint8 HairStyle;
|
||||
uint8 HairColor;
|
||||
uint8 FacialHair;
|
||||
uint8 OutfitId;
|
||||
WorldPacket Data;
|
||||
uint8 Race = 0;
|
||||
uint8 Class = 0;
|
||||
uint8 Gender = GENDER_NONE;
|
||||
uint8 Skin = 0;
|
||||
uint8 Face = 0;
|
||||
uint8 HairStyle = 0;
|
||||
uint8 HairColor = 0;
|
||||
uint8 FacialHair = 0;
|
||||
uint8 OutfitId = 0;
|
||||
|
||||
/// Server side data
|
||||
uint8 CharCount;
|
||||
uint8 CharCount = 0;
|
||||
};
|
||||
|
||||
private:
|
||||
virtual ~CharacterCreateInfo() = default;
|
||||
struct CharacterRenameInfo
|
||||
{
|
||||
friend class WorldSession;
|
||||
|
||||
protected:
|
||||
ObjectGuid Guid;
|
||||
std::string Name;
|
||||
};
|
||||
|
||||
struct CharacterCustomizeInfo : public CharacterRenameInfo
|
||||
{
|
||||
friend class Player;
|
||||
friend class WorldSession;
|
||||
|
||||
protected:
|
||||
uint8 Gender = GENDER_NONE;
|
||||
uint8 Skin = 0;
|
||||
uint8 Face = 0;
|
||||
uint8 HairStyle = 0;
|
||||
uint8 HairColor = 0;
|
||||
uint8 FacialHair = 0;
|
||||
};
|
||||
|
||||
struct CharacterFactionChangeInfo : public CharacterCustomizeInfo
|
||||
{
|
||||
friend class Player;
|
||||
friend class WorldSession;
|
||||
|
||||
protected:
|
||||
uint8 Race = 0;
|
||||
bool FactionChange = false;
|
||||
};
|
||||
|
||||
struct PacketCounter
|
||||
@@ -303,7 +333,7 @@ public:
|
||||
// Pet
|
||||
void SendPetNameQuery(ObjectGuid guid, uint32 petnumber);
|
||||
void SendStablePet(ObjectGuid guid);
|
||||
void SendStablePetCallback(PreparedQueryResult result, ObjectGuid guid);
|
||||
void SendStablePetCallback(ObjectGuid guid, PreparedQueryResult result);
|
||||
void SendStableResult(uint8 guid);
|
||||
bool CheckStableMaster(ObjectGuid guid);
|
||||
|
||||
@@ -316,7 +346,7 @@ public:
|
||||
|
||||
void LoadTutorialsData();
|
||||
void SendTutorialsData();
|
||||
void SaveTutorialsData(SQLTransaction& trans);
|
||||
void SaveTutorialsData(CharacterDatabaseTransaction trans);
|
||||
uint32 GetTutorialInt(uint8 index) const { return m_Tutorials[index]; }
|
||||
void SetTutorialInt(uint8 index, uint32 value)
|
||||
{
|
||||
@@ -403,13 +433,20 @@ public: // opcodes handlers
|
||||
void HandleCharEnumOpcode(WorldPacket& recvPacket);
|
||||
void HandleCharDeleteOpcode(WorldPacket& recvPacket);
|
||||
void HandleCharCreateOpcode(WorldPacket& recvPacket);
|
||||
void HandleCharCreateCallback(PreparedQueryResult result, CharacterCreateInfo* createInfo);
|
||||
void HandlePlayerLoginOpcode(WorldPacket& recvPacket);
|
||||
void HandleCharEnum(PreparedQueryResult result);
|
||||
void HandlePlayerLoginFromDB(LoginQueryHolder* holder);
|
||||
void HandlePlayerLoginFromDB(LoginQueryHolder const& holder);
|
||||
void HandlePlayerLoginToCharInWorld(Player* pCurrChar);
|
||||
void HandlePlayerLoginToCharOutOfWorld(Player* pCurrChar);
|
||||
void HandleCharFactionOrRaceChange(WorldPacket& recvData);
|
||||
void HandleCharFactionOrRaceChangeCallback(std::shared_ptr<CharacterFactionChangeInfo> factionChangeInfo, PreparedQueryResult result);
|
||||
|
||||
void SendCharCreate(ResponseCodes result);
|
||||
void SendCharDelete(ResponseCodes result);
|
||||
void SendCharRename(ResponseCodes result, CharacterRenameInfo const* renameInfo);
|
||||
void SendCharCustomize(ResponseCodes result, CharacterCustomizeInfo const* customizeInfo);
|
||||
void SendCharFactionChange(ResponseCodes result, CharacterFactionChangeInfo const* factionChangeInfo);
|
||||
void SendSetPlayerDeclinedNamesResult(DeclinedNameResult result, ObjectGuid guid);
|
||||
|
||||
// played time
|
||||
void HandlePlayedTime(WorldPacket& recvPacket);
|
||||
@@ -592,16 +629,16 @@ public: // opcodes handlers
|
||||
void HandleStablePet(WorldPacket& recvPacket);
|
||||
void HandleStablePetCallback(PreparedQueryResult result);
|
||||
void HandleUnstablePet(WorldPacket& recvPacket);
|
||||
void HandleUnstablePetCallback(PreparedQueryResult result, uint32 petId);
|
||||
void HandleUnstablePetCallback(uint32 petId, PreparedQueryResult result);
|
||||
void HandleBuyStableSlot(WorldPacket& recvPacket);
|
||||
void HandleStableRevivePet(WorldPacket& recvPacket);
|
||||
void HandleStableSwapPet(WorldPacket& recvPacket);
|
||||
void HandleStableSwapPetCallback(PreparedQueryResult result, uint32 petId);
|
||||
void HandleOpenWrappedItemCallback(PreparedQueryResult result, uint8 bagIndex, uint8 slot, ObjectGuid::LowType itemLowGUID);
|
||||
void HandleStableSwapPetCallback(uint32 petId, PreparedQueryResult result);
|
||||
void HandleOpenWrappedItemCallback(uint8 bagIndex, uint8 slot, ObjectGuid::LowType itemLowGUID, PreparedQueryResult result);
|
||||
void HandleLoadActionsSwitchSpec(PreparedQueryResult result);
|
||||
void HandleCharacterAuraFrozen(PreparedQueryResult result);
|
||||
uint8 HandleLoadPetFromDBFirstCallback(PreparedQueryResult result, uint8 asynchLoadType);
|
||||
void HandleLoadPetFromDBSecondCallback(LoadPetFromDBQueryHolder* holder);
|
||||
void HandleLoadPetFromDBSecondCallback(LoadPetFromDBQueryHolder const& holder);
|
||||
|
||||
void HandleDuelAcceptedOpcode(WorldPacket& recvPacket);
|
||||
void HandleDuelCancelledOpcode(WorldPacket& recvPacket);
|
||||
@@ -753,7 +790,7 @@ public: // opcodes handlers
|
||||
void HandleSetActionBarToggles(WorldPacket& recvData);
|
||||
|
||||
void HandleCharRenameOpcode(WorldPacket& recvData);
|
||||
void HandleChangePlayerNameOpcodeCallBack(PreparedQueryResult result, std::string const& newName);
|
||||
void HandleCharRenameCallBack(std::shared_ptr<CharacterRenameInfo> renameInfo, PreparedQueryResult result);
|
||||
void HandleSetPlayerDeclinedNames(WorldPacket& recvData);
|
||||
|
||||
void HandleTotemDestroyed(WorldPacket& recvData);
|
||||
@@ -903,6 +940,7 @@ public: // opcodes handlers
|
||||
void HandleAlterAppearance(WorldPacket& recvData);
|
||||
void HandleRemoveGlyph(WorldPacket& recvData);
|
||||
void HandleCharCustomize(WorldPacket& recvData);
|
||||
void HandleCharCustomizeCallback(std::shared_ptr<CharacterCustomizeInfo> customizeInfo, PreparedQueryResult result);
|
||||
void HandleQueryInspectAchievements(WorldPacket& recvData);
|
||||
void HandleEquipmentSetSave(WorldPacket& recvData);
|
||||
void HandleEquipmentSetDelete(WorldPacket& recvData);
|
||||
@@ -915,9 +953,6 @@ public: // opcodes handlers
|
||||
void HandleEnterPlayerVehicle(WorldPacket& data);
|
||||
void HandleUpdateProjectilePosition(WorldPacket& recvPacket);
|
||||
|
||||
// _loadPetFromDBFirstCallback helpers
|
||||
//QueryCallback<PreparedQueryResult, uint64> GetLoadPetFromDBFirstCallback() { return _loadPetFromDBFirstCallback; }
|
||||
|
||||
uint32 _lastAuctionListItemsMSTime;
|
||||
uint32 _lastAuctionListOwnerItemsMSTime;
|
||||
|
||||
@@ -931,28 +966,20 @@ public: // opcodes handlers
|
||||
bool GetShouldSetOfflineInDB() const { return _shouldSetOfflineInDB; }
|
||||
bool IsSocketClosed() const;
|
||||
|
||||
/***
|
||||
CALLBACKS
|
||||
***/
|
||||
/*
|
||||
* CALLBACKS
|
||||
*/
|
||||
|
||||
QueryCallbackProcessor& GetQueryProcessor() { return _queryProcessor; }
|
||||
TransactionCallback& AddTransactionCallback(TransactionCallback&& callback);
|
||||
SQLQueryHolderCallback& AddQueryHolderCallback(SQLQueryHolderCallback&& callback);
|
||||
|
||||
private:
|
||||
void InitializeQueryCallbackParameters();
|
||||
void ProcessQueryCallbacks();
|
||||
void ProcessQueryCallbackPlayer();
|
||||
void ProcessQueryCallbackPet();
|
||||
void ProcessQueryCallbackLogin();
|
||||
|
||||
PreparedQueryResultFuture _charEnumCallback;
|
||||
PreparedQueryResultFuture _stablePetCallback;
|
||||
QueryCallback<PreparedQueryResult, std::string> _charRenameCallback;
|
||||
QueryCallback<PreparedQueryResult, uint32> _unstablePetCallback;
|
||||
QueryCallback<PreparedQueryResult, uint32> _stableSwapCallback;
|
||||
QueryCallback<PreparedQueryResult, ObjectGuid> _sendStabledPetCallback;
|
||||
QueryCallback<PreparedQueryResult, CharacterCreateInfo*, true> _charCreateCallback;
|
||||
|
||||
QueryResultHolderFuture _charLoginCallback;
|
||||
|
||||
QueryResultHolderFuture _loadPetFromDBSecondCallback;
|
||||
QueryCallback_3<PreparedQueryResult, uint8, uint8, uint32> _openWrappedItemCallback;
|
||||
QueryCallbackProcessor _queryProcessor;
|
||||
AsyncCallbackProcessor<TransactionCallback> _transactionCallbacks;
|
||||
AsyncCallbackProcessor<SQLQueryHolderCallback> _queryHolderProcessor;
|
||||
|
||||
friend class World;
|
||||
protected:
|
||||
@@ -984,15 +1011,6 @@ protected:
|
||||
DosProtection& operator=(DosProtection const& right) = delete;
|
||||
} AntiDOS;
|
||||
|
||||
public:
|
||||
// xinef: those must be public, requires calls out of worldsession :(
|
||||
QueryCallback_2<PreparedQueryResult, uint32, AsynchPetSummon*> _loadPetFromDBFirstCallback;
|
||||
PreparedQueryResultFuture _loadActionsSwitchSpecCallback;
|
||||
PreparedQueryResultFuture _CharacterAuraFrozenCallback;
|
||||
|
||||
/***
|
||||
END OF CALLBACKS
|
||||
***/
|
||||
private:
|
||||
// private trade methods
|
||||
void moveItems(Item* myItems[], Item* hisItems[]);
|
||||
|
||||
Reference in New Issue
Block a user