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

64 lines
1.7 KiB
C++

#pragma once
#include <PacketStruct_CG.h>
//#include <Object/MsgHandler.h>
class ServerSession;
class PacketHandler;
class WiseUser;
#pragma pack(push, 1)
struct sCONNECT_INFO
{
WORD wPORT;
cSTRING_BUFFER<MAX_IP_STRING_LEN+1> pIP;
};
#pragma pack(pop)
class UserSessionMgr
{
// <TYPE DEFINITION>
public:
enum eCONTROL_PHASE
{
eCONTROL_PHASE_AUTH_AGENT,
eCONTROL_PHASE_AGENT_NOCRYPT,
eCONTROL_PHASE_AGENT_CRYPT,
};
public: UserSessionMgr();
~UserSessionMgr();
public: void Connect(eCONNECT_SESSIONS idxSession);
void OnConnect(eCONNECT_SESSIONS idxSession);
void Disconnect(eCONNECT_SESSIONS idxSession);
void OnDisconnect(eCONNECT_SESSIONS idxSession);
public: void OnRecv(eCONNECT_SESSIONS idxSession, BYTE *pMsg, WORD wSize);
BOOL SendPacket(eCONNECT_SESSIONS idxSession, MSG_BASE* pMsg, WORD wSize);
public: void Init();
void Release();
inline void BindWiseUser(WiseUser* pUser) { m_pWiseUser = pUser; }
inline void UnbindWiseUser() { m_pWiseUser = NULL; }
inline WiseUser* GetWiseUser() { return m_pWiseUser; }
ServerSession* GetSession(eCONNECT_SESSIONS idxSession);
void SetConnectionInfo(eCONNECT_SESSIONS idxSession, sCONNECT_INFO* IN pConnectInfo);
BOOL GetConnectionInfo(eCONNECT_SESSIONS idxSession, sCONNECT_INFO* OUT pConnectInfo);
public: static WiseUser* GetActiveTransactionWiseUser() { return ms_pActiveTransactionWiseUser; }
static void SetActiveTransactionWiseUser(WiseUser* pUser) { ms_pActiveTransactionWiseUser = pUser; }
// <FIELDs>
private: WiseUser* m_pWiseUser;
ServerSession* m_pSessions[MAX_SESSION];
sCONNECT_INFO m_pConnectInfos[MAX_SESSION];
private: static WiseUser* ms_pActiveTransactionWiseUser;
};