UserList.h
上传用户:hysujiao87
上传日期:2007-12-02
资源大小:156k
文件大小:2k
源码类别:

ICQ/即时通讯

开发平台:

C/C++

  1. // UserList.h: interface for the CUserRecord class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_USERRECORD_H__5D62B780_8E65_11D6_9C0E_0080C8F72DA3__INCLUDED_)
  5. #define AFX_USERRECORD_H__5D62B780_8E65_11D6_9C0E_0080C8F72DA3__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include "friendDef.h"
  10. class CUserData : public CObject
  11. {
  12. public:
  13. CString _clientID;
  14. CString _password;
  15. CString _nickname;
  16. BOOL _online;
  17. sockaddr_in _sockAddr;
  18. DWORD _lastReport;
  19. CUserData();
  20. ~CUserData();
  21. void Serialize(CArchive &ar);
  22. void operator = (CUserData& data);
  23. HRESULT addFriend(LPCTSTR friendID);
  24. void clear();
  25. int getFriendCount(){
  26. return _friendList.size();
  27. }
  28. CString getFriendID(int index){
  29. if (index >= (int)_friendList.size())
  30. return CString(_T(""));
  31. return _friendList[index]->userID;
  32. }
  33. protected:
  34. FriendVector _friendList;
  35. DECLARE_DYNCREATE(CUserData)
  36. };
  37. class CUserList : public CObject
  38. {
  39. public:
  40. CUserList();
  41. ~CUserList();
  42. void addUser(CUserData* userData);
  43. void removeAll();
  44. CUserData* getUserByID(LPCTSTR userID);
  45. CUserData* getUserByIndex(INT_PTR index);
  46. INT_PTR getCount(){
  47. CSingleLock lock(&_mutex, TRUE);
  48. _ASSERTE(lock.IsLocked() == TRUE);
  49. if (lock.IsLocked() != TRUE)
  50. return 0;
  51. return _userList.GetCount();
  52. }
  53. HRESULT authenticate(LPCTSTR userID, LPCTSTR password);
  54. void Serialize(CArchive &ar);
  55. protected:
  56. CMutex _mutex;
  57. CTypedPtrList <CPtrList, CUserData*> _userList;
  58. DECLARE_DYNCREATE(CUserList)
  59. };
  60. #endif // !defined(AFX_USERRECORD_H__5D62B780_8E65_11D6_9C0E_0080C8F72DA3__INCLUDED_)