From a3c9390bfe9b64bff711a35696ebf8305b6699cb Mon Sep 17 00:00:00 2001 From: lotodore Date: Thu, 1 Nov 2007 00:12:47 +0000 Subject: [PATCH] Redesign of avatar stuff. First part. --- src/net/common/clientthread.cpp | 30 ++++++++++++++-------------- src/net/common/senderthread.cpp | 9 +++++++-- src/net/common/serverlobbythread.cpp | 10 +++++----- 3 files changed, 27 insertions(+), 22 deletions(-) diff --git a/src/net/common/clientthread.cpp b/src/net/common/clientthread.cpp index 2cc16f66..02b6cb76 100644 --- a/src/net/common/clientthread.cpp +++ b/src/net/common/clientthread.cpp @@ -438,9 +438,6 @@ ClientThread::SetPlayerInfo(unsigned id, const PlayerInfo &info, bool retrieveAv retrieveAvatarData.avatar = info.avatar; static_cast(retrieveAvatar.get())->SetData(retrieveAvatarData); GetSender().Send(GetContext().GetSessionData(), retrieveAvatar); - - // Insert empty value in list to synchronize waiting. - m_tempAvatarMap[id] = boost::shared_ptr(); } // Remove it from the request list. @@ -502,20 +499,23 @@ ClientThread::CompleteTempAvatarData(unsigned playerId) boost::shared_ptr tmpAvatar = pos->second; unsigned avatarSize = (unsigned)tmpAvatar->fileData.size(); if (avatarSize != tmpAvatar->reportedSize) - throw ClientException(__FILE__, __LINE__, ERR_NET_WRONG_AVATAR_SIZE, 0); - - PlayerInfo tmpPlayerInfo; - if (!GetCachedPlayerInfo(playerId, tmpPlayerInfo)) - throw ClientException(__FILE__, __LINE__, ERR_NET_UNKNOWN_PLAYER_ID, 0); - - if (!GetAvatarManager().StoreAvatarInCache(tmpPlayerInfo.avatar, tmpAvatar->fileType, &tmpAvatar->fileData[0], avatarSize)) - LOG_ERROR("Failed to store avatar in cache directory."); + LOG_ERROR("Client received invalid avatar file size!"); + else + { + PlayerInfo tmpPlayerInfo; + if (!GetCachedPlayerInfo(playerId, tmpPlayerInfo)) + LOG_ERROR("Client received invalid player id!"); + else + { + if (!GetAvatarManager().StoreAvatarInCache(tmpPlayerInfo.avatar, tmpAvatar->fileType, &tmpAvatar->fileData[0], avatarSize)) + LOG_ERROR("Failed to store avatar in cache directory."); + // Update player info, but never re-request avatar. + SetPlayerInfo(playerId, tmpPlayerInfo, false); + } + } // Free memory. m_tempAvatarMap.erase(pos); - - // Update player info, but never re-request avatar. - SetPlayerInfo(playerId, tmpPlayerInfo, false); } void @@ -938,6 +938,6 @@ ClientThread::SetSessionEstablished(bool flag) bool ClientThread::IsSynchronized() const { - return (m_playerInfoRequestList.empty() && m_tempAvatarMap.empty()); + return m_playerInfoRequestList.empty(); } diff --git a/src/net/common/senderthread.cpp b/src/net/common/senderthread.cpp index 4d71572f..d60e39cf 100644 --- a/src/net/common/senderthread.cpp +++ b/src/net/common/senderthread.cpp @@ -32,8 +32,13 @@ using namespace std; #define SEND_ERROR_NORMAL_TIMEOUT_MSEC 20000 #define SEND_ERROR_LOW_PRIO_TIMEOUT_MSEC 10000 #define SEND_TIMEOUT_MSEC 10 -#define SEND_QUEUE_SIZE 10000 -#define SEND_LOW_PRIO_QUEUE_SIZE 10000000 +#ifdef POKERTH_DEDICATED_SERVER + #define SEND_QUEUE_SIZE 10000 + #define SEND_LOW_PRIO_QUEUE_SIZE 10000000 +#else + #define SEND_QUEUE_SIZE 1000 + #define SEND_LOW_PRIO_QUEUE_SIZE 10000 +#endif SenderThread::SenderThread(SenderCallback &cb) : m_tmpOutBufSize(0), m_tmpIsLowPrio(false), m_callback(cb) diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index 1225b723..1fbac5fd 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -380,16 +380,16 @@ ServerLobbyThread::HandleNetPacketInit(SessionWrapper session, const NetPacketIn new PlayerData(GetNextUniquePlayerId(), 0, PLAYER_TYPE_HUMAN, PLAYER_RIGHTS_NORMAL)); tmpPlayerData->SetName(initData.playerName); tmpPlayerData->SetNetSessionData(session.sessionData); -// if (initData.showAvatar) -// tmpPlayerData->SetAvatarMD5(initData.avatar); + if (initData.showAvatar) + tmpPlayerData->SetAvatarMD5(initData.avatar); // Set player data for session. m_sessionManager.SetSessionPlayerData(session.sessionData->GetId(), tmpPlayerData); session.playerData = tmpPlayerData; -// if (initData.showAvatar && !GetAvatarManager().HasAvatar(initData.avatar)) -// RequestPlayerAvatar(session); -// else + if (initData.showAvatar && !initData.avatar.IsZero() && !GetAvatarManager().HasAvatar(initData.avatar)) + RequestPlayerAvatar(session); + else EstablishSession(session); }