From 6489f28e9375f65e5fd97640ef9627f39c26a9d6 Mon Sep 17 00:00:00 2001 From: lotodore Date: Thu, 22 Nov 2007 17:56:49 +0000 Subject: [PATCH] Remove sender thread for avatars, it caused loads of problems, one of these being that packets were "destroyed" because half-sent packets were made invalid. Use main sender instead. --- src/net/common/serverlobbythread.cpp | 13 +------------ src/net/serverlobbythread.h | 1 - 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index f034adf2..e5060769 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -39,8 +39,6 @@ #define SERVER_SAVE_STATISTICS_INTERVAL_SEC 60 #define SERVER_INIT_SESSION_TIMEOUT_SEC 20 -#define SERVER_NUM_AVATAR_SENDER_THREADS 1 - #define SERVER_STATISTICS_FILE_NAME "server_statistics.log" #define SERVER_STATISTICS_STR_TOTAL_PLAYERS "TotalNumPlayersLoggedIn" #define SERVER_STATISTICS_STR_TOTAL_GAMES "TotalNumGamesCreated" @@ -75,8 +73,6 @@ ServerLobbyThread::ServerLobbyThread(GuiInterface &gui, ConfigFile *playerConfig { m_senderCallback.reset(new ServerSenderCallback(*this)); m_sender.reset(new SenderThread(GetSenderCallback())); - for (int i = 0; i < SERVER_NUM_AVATAR_SENDER_THREADS; i++) - m_avatarSenderThreadPool.push_back(boost::shared_ptr(new SenderThread(GetSenderCallback()))); m_receiver.reset(new ReceiverHelper); } @@ -294,7 +290,6 @@ void ServerLobbyThread::Main() { GetSender().Run(); - for_each(m_avatarSenderThreadPool.begin(), m_avatarSenderThreadPool.end(), boost::mem_fn(&SenderThread::Run)); try { @@ -326,10 +321,8 @@ ServerLobbyThread::Main() TerminateGames(); GetSender().SignalTermination(); - for_each(m_avatarSenderThreadPool.begin(), m_avatarSenderThreadPool.end(), boost::mem_fn(&SenderThread::SignalTermination)); GetSender().Join(SENDER_THREAD_TERMINATE_TIMEOUT); - for_each(m_avatarSenderThreadPool.begin(), m_avatarSenderThreadPool.end(), boost::bind(&SenderThread::Join, _1, SENDER_THREAD_TERMINATE_TIMEOUT)); CleanupConnectQueue(); } @@ -590,11 +583,7 @@ ServerLobbyThread::HandleNetPacketRetrieveAvatar(SessionWrapper session, const N if (GetAvatarManager().AvatarFileToNetPackets(tmpFile, request.requestId, tmpPackets) == 0) { avatarFound = true; - SenderThreadList::iterator pos = min_element(m_avatarSenderThreadPool.begin(), m_avatarSenderThreadPool.end(), *boost::lambda::_1 < *boost::lambda::_2); - if (pos != m_avatarSenderThreadPool.end()) - (*pos)->Send(session.sessionData, tmpPackets); - else - LOG_ERROR("Load balancing for avatar sender threads failed."); + GetSender().Send(session.sessionData, tmpPackets); } else LOG_ERROR("Failed to read avatar file for network transmission."); diff --git a/src/net/serverlobbythread.h b/src/net/serverlobbythread.h index 8d4a8421..4e8d473a 100644 --- a/src/net/serverlobbythread.h +++ b/src/net/serverlobbythread.h @@ -177,7 +177,6 @@ private: boost::shared_ptr m_receiver; boost::shared_ptr m_sender; - SenderThreadList m_avatarSenderThreadPool; boost::shared_ptr m_senderCallback; GuiInterface &m_gui; AvatarManager &m_avatarManager;