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
+11 -3
View File
@@ -18,9 +18,9 @@
***************************************************************************/
#include <net/clientcontext.h>
#include <net/sendercallback.h>
#include <net/senderthread.h>
class ClientSenderCallback : public SenderCallback
class ClientSenderCallback : public SenderCallback, public SessionDataCallback
{
public:
ClientSenderCallback() {}
@@ -30,6 +30,10 @@ public:
{
}
virtual void SignalSessionTerminated(unsigned /*session*/)
{
}
private:
};
@@ -40,10 +44,14 @@ ClientContext::ClientContext()
{
bzero(&m_clientSockaddr, sizeof(m_clientSockaddr));
m_senderCallback.reset(new ClientSenderCallback());
m_senderThread.reset(new SenderThread(*m_senderCallback));
m_senderThread->Start();
}
ClientContext::~ClientContext()
{
m_senderThread->SignalStop();
m_senderThread->WaitStop();
}
SOCKET
@@ -56,7 +64,7 @@ ClientContext::GetSocket() const
void
ClientContext::SetSocket(SOCKET sockfd)
{
m_sessionData.reset(new SessionData(sockfd, SESSION_ID_GENERIC, *m_senderCallback));
m_sessionData.reset(new SessionData(sockfd, SESSION_ID_GENERIC, m_senderThread, *m_senderCallback));
}
boost::shared_ptr<SessionData>