Fixed one thread per session implementation. Kind of. Still seems to have a handle leak on Windows. However, it does not scale at all and needs to be reverted. It won't even handle 500 players with 500 games on a dual core high end machine.

This commit is contained in:
lotodore
2009-01-11 20:12:26 +00:00
parent 4f7cf0bdb2
commit 29061b661c
11 changed files with 155 additions and 34 deletions
+5 -9
View File
@@ -18,22 +18,18 @@
***************************************************************************/
#include <net/sessiondata.h>
#include <net/senderthread.h>
#include <net/senderinterface.h>
SessionData::SessionData(SOCKET sockfd, SessionId id, SenderCallback &cb)
SessionData::SessionData(SOCKET sockfd, SessionId id, boost::shared_ptr<SenderInterface> sender, SessionDataCallback &cb)
: m_sockfd(sockfd), m_id(id), m_state(SessionData::Init), m_readyFlag(false),
m_wantsLobbyMsg(true), m_activityTimeoutNoticeSent(false)
m_wantsLobbyMsg(true), m_activityTimeoutNoticeSent(false), m_callback(cb)
{
m_sender.reset(new SenderThread(cb));
m_sender->Start();
m_sender = sender;
}
SessionData::~SessionData()
{
m_sender->SignalStop();
m_sender->WaitStop();
if (m_sockfd != INVALID_SOCKET)
CLOSESOCKET(m_sockfd);
m_callback.SignalSessionTerminated(m_id);
}
SessionId