#pragma once //============================================================================================================================= /// SolarAuthServer class /** @author Lee Eun-pa @since 2006. 08. 11 @remark - SolarAuthServer @note @history - */ //============================================================================================================================= //#include #include #include "Sessions/ServerSessionManager.h" #include "Sessions/TempServerSession.h" #include "Sessions/MasterServerSession.h" #include "Sessions/AccountDBProxySession.h" class ServerSession; class SolarAuthServer : public ServerFrame { public: enum eIOHANDLER { INSIDE_IOHANDLER = 0, OUTSIDE_IOHANDLER = 1, NUM_IOHANDER = 2, BOTH_IOHANDLER = 2, }; public: // SolarAuthServer(); ~SolarAuthServer(); static SolarAuthServer* GetMainFrame(); public: // ServerFrameÀ¸·Î ÀüȯÇϸ鼭 Â÷·Ê´ë·Î Á¤¸® static NetworkObject* Handler_AllocServerSession_NoInit( eSERVER_TYPE serverType ); static VOID Handler_FreeServerSession_NoRelease( NetworkObject* pNetworkObject ); static ServerSession* Handler_AllocServerSession( eSERVER_TYPE serverType ); static VOID Handler_FreeServerSession( ServerSession* pServerSession ); // Callback Handlers static NetworkObject* CreateServerSideAcceptedObject(); static VOID DestroyServerSideAcceptedObject( NetworkObject* pNetworkObject ); static VOID DestroyServerSideConnectedObject( NetworkObject* pNetworkObject ); public: virtual eSERVER_TYPE GetServerType() { return SOLARAUTH_SERVER; } protected: virtual BOOL Init(); virtual BOOL Update( DWORD tick ); virtual VOID Release(); virtual BOOL KeyEvent( CHAR ch ); virtual ServerSession* AllocServerSession( eSERVER_TYPE serverType ); virtual VOID FreeServerSession( ServerSession* pServerSession ); public: // //VOID Listen( eIOHANDLER where ); VOID Connect(); VOID Connect( const ServerSession* pNetObject, CHAR* IN pszIP, const WORD wPort ); VOID StartServer(); // À̰ÍÀº ServerFrameÀ» »ó¼ÓÇϸ鼭 »ý±ä Release È£Ãâ ÀÌÈÄ¿¡ ¹ß»ýÇÏ´Â »õ·Î¿î Instance¸¦ Á¦°ÅÇϱâ À§ÇÔ VOID Finalize(); public: // // inline BOOL GetServiceMode() { return m_bServiceMode; } inline eSERVER_MODE GetServerMode() { return m_ServerMode; } inline WORK_KEY GetReportWorkKey() { return m_wkReportWorkKey; } BOOL InitializeLogger(); AccountDBProxySession*& AccountDBP() { return m_pADBPSession; } public: // CONSOLE INPUT/OUTPUT BOOL ProcessConsole(); VOID DisplayServerInfo(); VOID DisplayServerListInfo(); VOID DisplayPoolInfo(); private: // Callback Handlers private: #pragma warning(push) #pragma warning(disable : 4201) // BOOL m_bShutdown; GLOBAL_SERVER_KEY m_GlobalServerKey; struct { // Server Runtime Control Flags BOOL m_bServiceMode; eSERVER_MODE m_ServerMode; }; struct { WORK_KEY m_wkReportWorkKey; }; AccountDBProxySession* m_pADBPSession; struct { // move from SessionFactory util::CMemoryPoolFactory m_TempServerPool; util::CMemoryPoolFactory m_MasterServerPool; util::CMemoryPoolFactory m_ADBPServerPool; }; #pragma warning(pop) };