#if !defined(AFX_QQUSER_H__933FF93B_1B19_4240_93F2_CCAF465B7A87__INCLUDED_)
#define AFX_QQUSER_H__933FF93B_1B19_4240_93F2_CCAF465B7A87__INCLUDED_
#include "QQ.h"
#if _MSC_VER > 1000
#pragma once
#endif
class CRequestLoginTokenReplyPacket;
class CLoginReplyPacket;
#define SAFE_FREE(p) \
if( p != NULL ) \
{ \
free(p); \
p = NULL; \
}
#define SAFE_DELETE(p) \
if( p != NULL ) \
{ \
delete p; \
p = NULL; \
}
class CQQUser
{
public:
friend class CRequestLoginTokenReplyPacket;
friend class CLoginReplyPacket;
CQQUser(int iQQNum, LPCTSTR lpszPassword);
virtual ~CQQUser();
void SetPassword(LPCSTR lpszPassword);
short GetNextSequence();
void SetServerIP(DWORD dwServerIP);
void SetServerPort(int iServerPort);
DWORD GetServerIP() const;
int GetServerPort() const;
int GetQQNum() const;
short GetHead() const;
BYTE GetLoginMode() const;
void SetHiddenLogin(bool bHidden);
bool IsUDP() const;
void SetUDP(bool bUDP);
BYTE GetStatus() const;
void SetStatus(BYTE bStatus);
bool IsShowFakeCam() const;
void SetShowFakeCam(bool bShowFakeCam);
BYTE* GetPasswordKey() const;
BYTE* GetInitKey() const;
int GetLoginTokenLen() const;
BYTE* GetLoginToken() const;
BYTE* GetSessionKey() const;
bool GetFakeIP() const;
void SetFakeIP(bool bFakeIP);
protected:
int m_iQQNum;
short m_sHead;
std::string m_strPassword;
BYTE m_bLoginMode;
bool m_bUDP;
BYTE m_bStatus;
bool m_bShowFakeCam;
short m_sSequence;
BYTE* m_pbPasswordKey;
BYTE* m_pbInitKey;
int m_iLoginTokenLen;
BYTE* m_pbLoginToken;
BYTE* m_pbSessionKey;
bool m_bFakeIP;
DWORD m_dwClientIP;
int m_iClientPort;
DWORD m_dwServerIP;
int m_iServerPort;
long m_lLoginTime;
BYTE* m_pbAuthToken;
BYTE* m_pbClientKey;
DWORD m_dwLastLoginIP;
long m_lLastLoginTime;
};
#endif