www.pudn.com > QQ2004_Source_0.01.rar > UserList.h
// UserList.h: interface for the CUserRecord class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_USERRECORD_H__5D62B780_8E65_11D6_9C0E_0080C8F72DA3__INCLUDED_)
#define AFX_USERRECORD_H__5D62B780_8E65_11D6_9C0E_0080C8F72DA3__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "friendDef.h"
class CUserData : public CObject
{
public:
CString _clientID;
CString _password;
CString _nickname;
BOOL _online;
sockaddr_in _sockAddr;
DWORD _lastReport;
CUserData();
~CUserData();
void Serialize(CArchive &ar);
void operator = (CUserData& data);
HRESULT addFriend(LPCTSTR friendID);
void clear();
int getFriendCount(){
return _friendList.size();
}
CString getFriendID(int index){
if (index >= (int)_friendList.size())
return CString(_T(""));
return _friendList[index]->userID;
}
protected:
FriendVector _friendList;
DECLARE_DYNCREATE(CUserData)
};
class CUserList : public CObject
{
public:
CUserList();
~CUserList();
void addUser(CUserData* userData);
void removeAll();
CUserData* getUserByID(LPCTSTR userID);
CUserData* getUserByIndex(INT_PTR index);
INT_PTR getCount(){
CSingleLock lock(&_mutex, TRUE);
_ASSERTE(lock.IsLocked() == TRUE);
if (lock.IsLocked() != TRUE)
return 0;
return _userList.GetCount();
}
HRESULT authenticate(LPCTSTR userID, LPCTSTR password);
void Serialize(CArchive &ar);
protected:
CMutex _mutex;
CTypedPtrList _userList;
DECLARE_DYNCREATE(CUserList)
};
#endif // !defined(AFX_USERRECORD_H__5D62B780_8E65_11D6_9C0E_0080C8F72DA3__INCLUDED_)