Files
2022-10-26 12:25:11 +08:00

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 );
}
}