#pragma once #include #include "BillingServerCommonImpl.h" //#ifdef _NEW_BILLING_SYSTEM // //struct MSG_BASE_BILLING; // //class BillingServerSession : public ServerSession //{ // enum { BILLING_SUN_CODE = 113, }; //public: // BillingServerSession(void); // ~BillingServerSession(void); // // inline virtual eSERVER_TYPE GetServerType() { return BILLING_SERVER; } // // BOOL SendPacket(MSG_BASE_BILLING* pMsg, WORD wSize); // VOID SendLogin(AccountInfo *pAccountInfo); // VOID SendLogout(AccountInfo *pAccountInfo); // //protected: // VOID OnConnect(BOOL bSuccess, DWORD dwNetworkIndex); // VOID OnDisconnect(); // VOID OnRecv(BYTE* pMsg, WORD wSize); // //private: // VOID OnBTOGExpireTermNTF(AccountInfo* pAccountInfo); // VOID OnBTOGAlarmExpireTermNTF(AccountInfo* pAccountInfo, double dRestTime); // VOID OnBS_BILLING_USER_STATUS_NTF(MSG_BASE_BILLING* pMsg, WORD wSize); // // AccountInfo* FindLogoutWaitAccount(DWORD userGuid); // //private: // typedef std::map ACCOUNTINFO_MAP; // // OnUserStatus¸¦ ¹Þ±â Àü¿¡ ·Î±×¾Æ¿ôÀ» ½ÃµµÇÏ·Á´Â À¯Àú ¸®½ºÆ® // ACCOUNTINFO_MAP m_mapLogoutWaitAccount; //}; // //#else //!_NEW_BILLING_SYSTEM struct MSG_BASE_BILLING; class BillingServerSession : public ServerSession { enum { BILLING_INFO_SEND_DELAY_TIME = 180000, BILLING_SUN_CODE = 2, }; public: BillingServerSession(void); ~BillingServerSession(void); inline virtual eSERVER_TYPE GetServerType() { return BILLING_SERVER; } void SendLogin(AccountInfo& info); void SendLogout(AccountInfo& info); BOOL SendPacket(MSG_BASE_BILLING* pMsg, WORD wSize); //_PCBANG_POLICY_CHANGE_POST_EXPIRED2 void QueryRestPoint(AccountInfo* account); protected: // CHANGES: f110617.1L, the sub-sessions can control first_contact_msg as the needs virtual void OnRedirect(DWORD session_index, MSG_SERVER_TYPE* const first_contact_msg); void OnRecv(BYTE* pMsg, WORD wSize); void OnConnect(BOOL bSuccess, DWORD dwNetworkIndex); void OnDisconnect(); private: void Update(); void MakeList(); void SendDeduction(); public: // for test void OnBS_BILLING_EXPIRED_NTF(MSG_BASE_BILLING* pMsg, WORD size); void OnBS_BILLING_EXPIRED_ALRAM_NTF(MSG_BASE_BILLING* pMsg, WORD size); //_PCBANG_POLICY_CHANGE_POST_EXPIRED2 void OnBS_BILLING_RESTPOINT_ACK(MSG_BASE_BILLING* pMsg, WORD size); private: BillingServerCommonImpl BillingCommonImpl; #ifdef _BILLING_CODE_REFACTORING_ typedef STLX_DEQUE AccountInfoQueue; AccountInfoQueue m_AccountInfoPendings; AccountInfoQueue m_AccountInfoPool; #else //!_BILLING_CODE_REFACTORING_ typedef std::vector VectAccountInfo; typedef std::queue PoolAccountInfo; VectAccountInfo m_vectAccountInfo; PoolAccountInfo m_poolAccountInfo; #endif //!_BILLING_CODE_REFACTORING_ util::Timer m_BillingTimer; }; //#endif //!_NEW_BILLING_SYSTEM // CHANGES: f110617.1L, the sub-sessions can control first_contact_msg as the needs inline void BillingServerSession::OnRedirect(DWORD, MSG_SERVER_TYPE* const) { assert(!"this session can't use this method"); }