#pragma once #include //#include class ServerSession; class PacketHandler; class WiseUser; #pragma pack(push, 1) struct sCONNECT_INFO { WORD wPORT; cSTRING_BUFFER pIP; }; #pragma pack(pop) class UserSessionMgr { // 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; } // private: WiseUser* m_pWiseUser; ServerSession* m_pSessions[MAX_SESSION]; sCONNECT_INFO m_pConnectInfos[MAX_SESSION]; private: static WiseUser* ms_pActiveTransactionWiseUser; };