#pragma once #include "NxAsyncEvent.h" #include "NxPacket.h" class NxNetInit; class NxAcceptor; class NxCompletionPort; class NxConnection; class NxConnectionManager; class NxSession; class NxSessionManager; class NxTimerThread; class NxServerApp : public NxAsyncEventHandler { public: NxServerApp(); virtual ~NxServerApp(); // ¼­¹ö ½ÃÀÛ virtual bool Create( int nWorkerTheadCnt, int nSessionPoolCnt, DWORD nTimerValue ); virtual bool BeginAcceptor(const TCHAR* szIPAddress, unsigned short nPort); virtual void Destroy(); // ¼¼¼Ç ÇÁ·Ï½Ã ¸Å´ÏÀú¸¦ »ý¼ºÇÑ´Ù. ÀçÁ¤ÀÇ ÇØ¾ßµÊ virtual bool CreateSessionManager(); virtual NxSession* OpenSession(const TCHAR* szIPAddress, unsigned short nPort); virtual bool CloseSession(DWORD nUID); void GetLocalIpPort( DWORD nUID, OUT tstring& szIP, OUT WORD& nPort ); public: virtual void HandleEvent( NxAsyncEvent* pEvent ); // Ŭ¶óÀÌ¾ðÆ®°¡ Á¢¼Ó ÇßÀ»¶§ È£ÃâµÈ´Ù. virtual void OnAccept( DWORD nUID, NxAsyncEvent* pEvent ); // ¼­¹ö¿¡ Á¢¼Ó µÇ¾úÀ»¶§ È£ÃâµÈ´Ù. ( Ŭ¶óÀÌ¾ðÆ® ¿ë ¼¼¼ÇÀ» Á¢¼Ó½ÃÄ×À»¶§ ) virtual void OnConnect( DWORD nUID, NxAsyncEvent* pEvent ); // Á¢¼Ó ²÷±è virtual void OnClose( DWORD nUID ); // »ç¿ëÀÚ Á¤ÀÇ À̺¥Æ® virtual void OnUserEvent( DWORD nUID, NxAsyncEvent* pEvent ); // ÆÐŶ ¼ö½Å½Ã virtual void OnPacket( DWORD nUID, NxPacket& Packet ); // ÆÐŶ ¼Û½Å½Ã virtual void SendPacket( DWORD nUID, NxPacket& Packet ); // ŸÀÌ¸Ó virtual void OnTimer(DWORD dt) { } public: static void AddSendBytes(DWORD nBytes) { m_nTotalSendBytes += nBytes; } static void AddRecvBytes(DWORD nBytes) { m_nTotalRecvBytes += nBytes; } static void AddSendCount() { ++m_nTotalSendCnt; } static void AddRecvCount() { ++m_nTotalRecvCnt; } static void ClearIOInfo() { m_nTotalSendBytes = m_nTotalRecvBytes = m_nTotalSendCnt = m_nTotalRecvCnt = 0; } public: static DWORD m_nTotalSendBytes; static DWORD m_nTotalRecvBytes; static DWORD m_nTotalSendCnt; static DWORD m_nTotalRecvCnt; private: NxNetInit* m_pNetInit; NxAcceptor* m_pAcceptor; // IO ¿ë CP NxCompletionPort* m_pNetIOCompletionPort; // Msg 󸮿ë CP NxCompletionPort* m_pMsgCompletionPort; // Ä¿³Ø¼Ç ¸Å´ÏÀú NxConnectionManager* m_pConnectionManager; // ŸÀÌ¸Ó ¾²·¹µå //NxTimerThread* m_pTimerThread; // ¸¶Áö¸· ŸÀÓ DWORD m_nLastTime; protected: // ¼¼¼Ç ¸Å´ÏÀú NxSessionManager* m_pSessionManager; };