Redesign of avatar stuff. First part.

This commit is contained in:
lotodore
2007-11-01 00:12:47 +00:00
parent 3a0fc4a71e
commit a3c9390bfe
3 changed files with 27 additions and 22 deletions
+15 -15
View File
@@ -438,9 +438,6 @@ ClientThread::SetPlayerInfo(unsigned id, const PlayerInfo &info, bool retrieveAv
retrieveAvatarData.avatar = info.avatar; retrieveAvatarData.avatar = info.avatar;
static_cast<NetPacketRetrieveAvatar *>(retrieveAvatar.get())->SetData(retrieveAvatarData); static_cast<NetPacketRetrieveAvatar *>(retrieveAvatar.get())->SetData(retrieveAvatarData);
GetSender().Send(GetContext().GetSessionData(), retrieveAvatar); GetSender().Send(GetContext().GetSessionData(), retrieveAvatar);
// Insert empty value in list to synchronize waiting.
m_tempAvatarMap[id] = boost::shared_ptr<AvatarData>();
} }
// Remove it from the request list. // Remove it from the request list.
@@ -502,20 +499,23 @@ ClientThread::CompleteTempAvatarData(unsigned playerId)
boost::shared_ptr<AvatarData> tmpAvatar = pos->second; boost::shared_ptr<AvatarData> tmpAvatar = pos->second;
unsigned avatarSize = (unsigned)tmpAvatar->fileData.size(); unsigned avatarSize = (unsigned)tmpAvatar->fileData.size();
if (avatarSize != tmpAvatar->reportedSize) if (avatarSize != tmpAvatar->reportedSize)
throw ClientException(__FILE__, __LINE__, ERR_NET_WRONG_AVATAR_SIZE, 0); LOG_ERROR("Client received invalid avatar file size!");
else
PlayerInfo tmpPlayerInfo; {
if (!GetCachedPlayerInfo(playerId, tmpPlayerInfo)) PlayerInfo tmpPlayerInfo;
throw ClientException(__FILE__, __LINE__, ERR_NET_UNKNOWN_PLAYER_ID, 0); if (!GetCachedPlayerInfo(playerId, tmpPlayerInfo))
LOG_ERROR("Client received invalid player id!");
if (!GetAvatarManager().StoreAvatarInCache(tmpPlayerInfo.avatar, tmpAvatar->fileType, &tmpAvatar->fileData[0], avatarSize)) else
LOG_ERROR("Failed to store avatar in cache directory."); {
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. // Free memory.
m_tempAvatarMap.erase(pos); m_tempAvatarMap.erase(pos);
// Update player info, but never re-request avatar.
SetPlayerInfo(playerId, tmpPlayerInfo, false);
} }
void void
@@ -938,6 +938,6 @@ ClientThread::SetSessionEstablished(bool flag)
bool bool
ClientThread::IsSynchronized() const ClientThread::IsSynchronized() const
{ {
return (m_playerInfoRequestList.empty() && m_tempAvatarMap.empty()); return m_playerInfoRequestList.empty();
} }
+7 -2
View File
@@ -32,8 +32,13 @@ using namespace std;
#define SEND_ERROR_NORMAL_TIMEOUT_MSEC 20000 #define SEND_ERROR_NORMAL_TIMEOUT_MSEC 20000
#define SEND_ERROR_LOW_PRIO_TIMEOUT_MSEC 10000 #define SEND_ERROR_LOW_PRIO_TIMEOUT_MSEC 10000
#define SEND_TIMEOUT_MSEC 10 #define SEND_TIMEOUT_MSEC 10
#define SEND_QUEUE_SIZE 10000 #ifdef POKERTH_DEDICATED_SERVER
#define SEND_LOW_PRIO_QUEUE_SIZE 10000000 #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) SenderThread::SenderThread(SenderCallback &cb)
: m_tmpOutBufSize(0), m_tmpIsLowPrio(false), m_callback(cb) : m_tmpOutBufSize(0), m_tmpIsLowPrio(false), m_callback(cb)
+5 -5
View File
@@ -380,16 +380,16 @@ ServerLobbyThread::HandleNetPacketInit(SessionWrapper session, const NetPacketIn
new PlayerData(GetNextUniquePlayerId(), 0, PLAYER_TYPE_HUMAN, PLAYER_RIGHTS_NORMAL)); new PlayerData(GetNextUniquePlayerId(), 0, PLAYER_TYPE_HUMAN, PLAYER_RIGHTS_NORMAL));
tmpPlayerData->SetName(initData.playerName); tmpPlayerData->SetName(initData.playerName);
tmpPlayerData->SetNetSessionData(session.sessionData); tmpPlayerData->SetNetSessionData(session.sessionData);
// if (initData.showAvatar) if (initData.showAvatar)
// tmpPlayerData->SetAvatarMD5(initData.avatar); tmpPlayerData->SetAvatarMD5(initData.avatar);
// Set player data for session. // Set player data for session.
m_sessionManager.SetSessionPlayerData(session.sessionData->GetId(), tmpPlayerData); m_sessionManager.SetSessionPlayerData(session.sessionData->GetId(), tmpPlayerData);
session.playerData = tmpPlayerData; session.playerData = tmpPlayerData;
// if (initData.showAvatar && !GetAvatarManager().HasAvatar(initData.avatar)) if (initData.showAvatar && !initData.avatar.IsZero() && !GetAvatarManager().HasAvatar(initData.avatar))
// RequestPlayerAvatar(session); RequestPlayerAvatar(session);
// else else
EstablishSession(session); EstablishSession(session);
} }