80 lines
1.2 KiB
C++
80 lines
1.2 KiB
C++
#include "StdAfx.h"
|
|
#include "UserManager.h"
|
|
#include "UserSession.h"
|
|
#include "UserSessionFactory.h"
|
|
|
|
UserManager::UserManager(void)
|
|
{
|
|
m_pUserHashTable = new SolarHashTable<UserSession *>;
|
|
}
|
|
|
|
UserManager::~UserManager(void)
|
|
{
|
|
}
|
|
|
|
VOID UserManager::Release()
|
|
{
|
|
for( USER_HASH_ITR it = m_pUserHashTable->begin(); it != m_pUserHashTable->end(); ++it )
|
|
{
|
|
UserSession *pUser = *it;
|
|
UserSessionFactory::Instance()->FreeUser( pUser );
|
|
}
|
|
|
|
SAFE_DELETE(m_pUserHashTable);
|
|
}
|
|
|
|
VOID UserManager::Init( DWORD dwUserSize )
|
|
{
|
|
m_pUserHashTable->Initialize( dwUserSize );
|
|
}
|
|
|
|
BOOL UserManager::AddUser( UserSession* pUserSession )
|
|
{
|
|
if( !pUserSession ) return FALSE;
|
|
|
|
if( GetUser( pUserSession->GetUserKey() ) )
|
|
return FALSE;
|
|
|
|
m_pUserHashTable->Add( pUserSession, pUserSession->GetUserKey() );
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL UserManager::RemoveUser( DWORD dwUserKey )
|
|
{
|
|
if( !GetUser( dwUserKey ) )
|
|
return FALSE;
|
|
|
|
m_pUserHashTable->Remove( dwUserKey );
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
VOID UserManager::SendPacketAll( MSG_BASE * pMsg, WORD wSize )
|
|
{
|
|
for( USER_HASH_ITR it = m_pUserHashTable->begin(); it != m_pUserHashTable->end(); ++it )
|
|
{
|
|
UserSession *pUser = *it;
|
|
pUser->SendPacket( pMsg, wSize );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|