From 1f5447bd1f11b55059ecb4e9bb266d6ecd1161ea Mon Sep 17 00:00:00 2001 From: lotodore Date: Mon, 23 Aug 2010 17:37:22 +0000 Subject: [PATCH] Store avatar type of current avatar in db. --- src/db/common/serverdbgeneric.cpp | 7 ++++++- src/db/serverdbgeneric.h | 3 ++- src/db/serverdbinterface.h | 3 ++- src/db/serverdbnoaction.h | 3 ++- src/net/common/serverlobbythread.cpp | 20 +++++++++++++++----- 5 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/db/common/serverdbgeneric.cpp b/src/db/common/serverdbgeneric.cpp index f8573d35..246205fa 100644 --- a/src/db/common/serverdbgeneric.cpp +++ b/src/db/common/serverdbgeneric.cpp @@ -49,11 +49,16 @@ ServerDBGeneric::Stop() } void -ServerDBGeneric::AsyncPlayerLogin(unsigned requestId, const string &/*playerName*/, const std::string &/*avatarHash*/) +ServerDBGeneric::AsyncPlayerLogin(unsigned requestId, const string &/*playerName*/) { m_ioService->post(boost::bind(&ServerDBCallback::PlayerLoginFailed, &m_callback, requestId)); } +void +ServerDBGeneric::PlayerPostLogin(DB_id /*playerId*/, const std::string &/*avatarHash*/, const std::string &/*avatarType*/) +{ +} + void ServerDBGeneric::PlayerLogout(DB_id /*playerId*/) { diff --git a/src/db/serverdbgeneric.h b/src/db/serverdbgeneric.h index f48072ba..3fa598ec 100644 --- a/src/db/serverdbgeneric.h +++ b/src/db/serverdbgeneric.h @@ -38,7 +38,8 @@ public: virtual void Start(); virtual void Stop(); - virtual void AsyncPlayerLogin(unsigned requestId, const std::string &playerName, const std::string &avatarHash); + virtual void AsyncPlayerLogin(unsigned requestId, const std::string &playerName); + virtual void PlayerPostLogin(DB_id playerId, const std::string &avatarHash, const std::string &avatarType); virtual void PlayerLogout(DB_id playerId); virtual void AsyncCreateGame(unsigned requestId, const std::string &gameName); diff --git a/src/db/serverdbinterface.h b/src/db/serverdbinterface.h index e3eda273..ddced5fc 100644 --- a/src/db/serverdbinterface.h +++ b/src/db/serverdbinterface.h @@ -38,7 +38,8 @@ public: virtual void Start() = 0; virtual void Stop() = 0; - virtual void AsyncPlayerLogin(unsigned requestId, const std::string &playerName, const std::string &avatarHash) = 0; + virtual void AsyncPlayerLogin(unsigned requestId, const std::string &playerName) = 0; + virtual void PlayerPostLogin(DB_id playerId, const std::string &avatarHash, const std::string &avatarType) = 0; virtual void PlayerLogout(DB_id playerId) = 0; virtual void AsyncCreateGame(unsigned requestId, const std::string &gameName) = 0; diff --git a/src/db/serverdbnoaction.h b/src/db/serverdbnoaction.h index b3b9a19d..027e09c9 100644 --- a/src/db/serverdbnoaction.h +++ b/src/db/serverdbnoaction.h @@ -36,7 +36,8 @@ public: virtual void Start() {} virtual void Stop() {} - virtual void AsyncPlayerLogin(unsigned requestId, const std::string &playerName, const std::string &avatarHash) {} + virtual void AsyncPlayerLogin(unsigned requestId, const std::string &playerName) {} + virtual void PlayerPostLogin(DB_id playerId, const std::string &avatarHash, const std::string &avatarType) {} virtual void PlayerLogout(DB_id playerId) {} virtual void AsyncCreateGame(unsigned requestId, const std::string &gameName) {} diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index c6a6e98d..862a7dac 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -1495,8 +1495,21 @@ ServerLobbyThread::InitAfterLogin(SessionWrapper session) void ServerLobbyThread::EstablishSession(SessionWrapper session) { - if (!session.playerData.get()) + if (!session.playerData) throw ServerException(__FILE__, __LINE__, ERR_NET_INVALID_SESSION, 0); + + // Run postlogin for DB + string tmpAvatarHash; + string tmpAvatarType; + if (!session.playerData->GetAvatarMD5().IsZero()) + { + tmpAvatarHash = session.playerData->GetAvatarMD5().ToString(); + tmpAvatarType = AvatarManager::GetAvatarFileExtension(AvatarManager::GetAvatarFileType(session.playerData->GetAvatarFile())); + if (!tmpAvatarType.empty()) + tmpAvatarType.erase(0, 1); // Only store extension without the "." + } + m_database->PlayerPostLogin(session.playerData->GetDBId(), tmpAvatarHash, tmpAvatarType); + // Send ACK to client. boost::shared_ptr ack(new NetPacket(NetPacket::Alloc)); ack->GetMsg()->present = PokerTHMessage_PR_initAckMessage; @@ -1529,10 +1542,7 @@ ServerLobbyThread::AuthenticatePlayer(SessionWrapper session) { if(session.playerData) { - if (!session.playerData->GetAvatarMD5().IsZero()) - m_database->AsyncPlayerLogin(session.playerData->GetUniqueId(), session.playerData->GetName(), session.playerData->GetAvatarMD5().ToString()); - else - m_database->AsyncPlayerLogin(session.playerData->GetUniqueId(), session.playerData->GetName(), ""); + m_database->AsyncPlayerLogin(session.playerData->GetUniqueId(), session.playerData->GetName()); } }