GlobalUserList.cpp
上传用户:szopptop
上传日期:2013-04-23
资源大小:1047k
文件大小:1k
源码类别:

模拟服务器

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include "globalUserList.h"
  3. #include "..Def_OrzExerror.h"
  4. static CGlobalUserList s_globalUserList;
  5. CGlobalUserList::CGlobalUserList()
  6. : m_fixedMemory( GLOBALLIST_MAXLIST )
  7. {
  8. if ( !m_listUser.InitHashTable( GLOBALLIST_MAXBUCKET, IHT_ROUNDUP ) )
  9. throw CError( "CGlobalUserList::CGlobalUserList 秦浆抛捞喉 积己 角菩" );
  10. m_listUser.SetGetKeyFunction( __cbGetKey );
  11. }
  12. CGlobalUserList::~CGlobalUserList()
  13. {
  14. m_listUser.UninitHashTable( false );
  15. }
  16. bool CGlobalUserList::Insert( char *pID, char *pIP )
  17. {
  18. if ( strlen( pID ) >= CUserInfo::MAXID || strlen( pIP ) >= CUserInfo::MAXIP )
  19. return false;
  20. CUserInfo *pUser = m_fixedMemory.Alloc();
  21. if ( !pUser )
  22. return false;
  23. strcpy( pUser->szID, pID );
  24. strcpy( pUser->szIP, pIP );
  25. Lock();
  26. if ( !m_listUser.Insert( pUser ) )
  27. {
  28. Unlock();
  29. m_fixedMemory.Free( pUser );
  30. return false;
  31. }
  32. Unlock();
  33. return true;
  34. }
  35. CGlobalUserList::CUserInfo * CGlobalUserList::Search( char *pID )
  36. {
  37. Lock();
  38. CUserInfo *pUser = m_listUser.SearchKey( pID );
  39. Unlock();
  40. return pUser;
  41. }
  42. void CGlobalUserList::Remove( char *pID )
  43. {
  44. Lock();
  45. m_fixedMemory.Free( m_listUser.Remove( (CUserInfo *) pID ) );
  46. Unlock();
  47. }
  48. char * CGlobalUserList::__cbGetKey( CUserInfo *pUser )
  49. {
  50. return pUser->szID;
  51. }
  52. CGlobalUserList * GetGlobalUserList()
  53. {
  54. return &s_globalUserList;
  55. }