LosaDev source snapshot 2019
This commit is contained in:
commit
c198676e97
20588 files changed
+8812878
No files matched your search
@@ -0,0 +1,83 @@
|
||||
#include "StdAfx.h"
|
||||
#include "cServerSocketManager.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Construction/Destruction
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
cServerSocketManager::cServerSocketManager(void)
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
cServerSocketManager::~cServerSocketManager(void)
|
||||
{
|
||||
Destroy();
|
||||
}
|
||||
|
||||
void cServerSocketManager::Init()
|
||||
{
|
||||
m_sockets.reserve(8);
|
||||
}
|
||||
|
||||
void cServerSocketManager::Destroy()
|
||||
{
|
||||
for( uint32 i = 0 ; i < m_sockets.size() ; i++ )
|
||||
{
|
||||
cServerSocket* serverSocket = m_sockets[i];
|
||||
if( serverSocket )
|
||||
{
|
||||
delete serverSocket;
|
||||
serverSocket = NULL;
|
||||
}
|
||||
}
|
||||
m_sockets.clear();
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Operation
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
BOOL cServerSocketManager::AddSocket(const uint16 port, const int32 backlog, uint32& ID)
|
||||
{
|
||||
cServerSocket* serverSocket = new cServerSocket;
|
||||
if( serverSocket )
|
||||
{
|
||||
if( !serverSocket->Startup() )
|
||||
{
|
||||
delete serverSocket;
|
||||
Information( _T("[%lu]LS system :: server socket startup(%lu)\r\n"), GetCurrentThreadId(), GetLastError() );
|
||||
return FALSE;
|
||||
}
|
||||
if( !serverSocket->CreateSocket() )
|
||||
{
|
||||
delete serverSocket;
|
||||
Information( _T("[%lu]LS system :: server socket create(%lu)\r\n"), GetCurrentThreadId(), GetLastError() );
|
||||
return FALSE;
|
||||
}
|
||||
if( !serverSocket->Bind(port) )
|
||||
{
|
||||
delete serverSocket;
|
||||
Information( _T("[%lu]LS system :: server socket bind(%lu)\r\n"), GetCurrentThreadId(), GetLastError() );
|
||||
return FALSE;
|
||||
}
|
||||
if( !serverSocket->Listen(backlog) )
|
||||
{
|
||||
delete serverSocket;
|
||||
Information( _T("[%lu]LS system :: server socket listen(%lu)\r\n"), GetCurrentThreadId(), GetLastError() );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
ID = m_sockets.size();
|
||||
|
||||
m_sockets.push_back( serverSocket );
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
cServerSocket* cServerSocketManager::GetSocket(const uint32 ID)
|
||||
{
|
||||
return (ID < m_sockets.size()) ? m_sockets.at(ID) : NULL;
|
||||
}
|
||||
Reference in new issue
Block a user