#pragma once
|
|
#include "IOCPHandler.h"
|
|
class AFX_EXT_CLASS CIOCPController : public CIOCPHandler
|
{
|
public:
|
CIOCPController(void);
|
virtual ~CIOCPController(void);
|
|
// ÃʱâÈ Ã³¸®
|
BOOL StartUp(); //!< ¼ÒÄÏ ÃʱâÈ ÇÔ¼ö
|
BOOL CleanUp(); //!< ¼ÒÄÏ ÇØÁ¦ ÇÔ¼ö
|
BOOL InitNetwork(NetworkMode Mode, int nSocketCount, int nPort = 0, CString strIP = _T(""), int nWorkerThreadNum = 0); //!< NetworkÀÇ ÃʱâÈ ÇÔ¼ö
|
|
BOOL Connect(BOOL bReconnect); //!< ¿¬°á
|
void DeinitNetwork(); //!< Á¾·á ÃʱâÈ
|
|
CString GetCurIP() { return m_strIP; }
|
int CIOCPControllerGetCurPort() { return m_nPort; }
|
|
|
virtual int AcceptedSocket(pPerSocketContext pSocketCtx, ULONG ulIP, int nPort) = 0; //!< (¼ø¼ö°¡»óÇÔ¼ö : ½Ç±¸ÇöºÎ´Â CNetServer) Server SocketÀÌ Á¢¼ÓÀ» Çã¿ëÇßÀ» ¶§ È£ÃâÇÏ´Â ÇÔ¼ö.
|
virtual BOOL ConnectedSocket(pPerSocketContext pSocketCtx) = 0; //!< (¼ø¼ö°¡»óÇÔ¼ö : ½Ç±¸ÇöºÎ´Â CNetClient) Client SocketÀÌ Á¢¼ÓµÇ¾úÀ» ¶§ È£ÃâÇÏ´Â ÇÔ¼ö
|
virtual BOOL RecvCompleted(pPerSocketContext pSocketCtx, DWORD dwBytes) = 0; //!< (¼ø¼ö°¡»óÇÔ¼ö : ½Ç±¸ÇöºÎ´Â CNetServer,CNetClient) Socket¿¡¼ Receive°¡ ¿Ï·áµÇ¾úÀ» ¶§ CIOCPController¿¡¼ È£ÃâÇÏ´Â ÇÔ¼ö - Data Parseing
|
virtual BOOL SendCompleted(pPerSocketContext pSocketCtx, DWORD dwBytes) = 0; //!< (¼ø¼ö°¡»óÇÔ¼ö : ½Ç±¸ÇöºÎ´Â CNetServer,CNetClient) SocketÀ» ÅëÇØ Send°¡ ¿Ï·áµÇ¾úÀ» ¶§ CIOCPController¿¡¼ È£ÃâÇÏ´Â ÇÔ¼ö. - ÈÄó¸®
|
virtual void SocketClosed(pPerSocketContext pSocketCtx) = 0; //!< (¼ø¼ö°¡»óÇÔ¼ö) SocketÀÌ ²÷¾îÁ³À½À» ¾Ë·ÁÁÖ±â À§ÇÑ ÇÔ¼ö
|
|
|
protected:
|
BOOL RecvPost(pPerSocketContext pPerSocketCtx); //!< RECV ¿äû
|
int SendPost(pPerSocketContext pPerSocketCtx); //!< Send ¿äû
|
int SendPost(pPerSocketContext pPerSocketCtx, void* pBuffer, int nLen); //!< Send ¿äû
|
|
void CloseSocket(pPerSocketContext pPerSocketCtx, BOOL bGraceful = FALSE, BOOL bNotify = TRUE); //!< Ŭ¶óÀÌ¾ðÆ® ¼ÒÄÏ ÄÁÅØ½ºÆ® Á¦°ÅÇÏ°í ¼ÒÄÏ ´ÝÀ½
|
void NoticeMsg(char *str, ...); //!< ·Î±×¿ë(»ç¿ëX)
|
|
CRITICAL_SECTION m_csContext; //!< ÄÁÅØ½ºÆ® µ¿±âÈ °´Ã¼
|
|
CString m_strIPAddr[10]; //!< IPÁÖ¼Ò
|
private:
|
static DWORD __stdcall AcceptThread(PVOID pvParam); //!< (¿öÄ¿¾²·¹µå) Accept ÀÛ¾÷ ó¸® ÇÔ¼ö
|
static DWORD __stdcall ConnectThread(PVOID pvParam); //!< (¿öÄ¿¾²·¹µå) Connect ÀÛ¾÷ ó¸® ÇÔ¼ö
|
void AcceptProcess(); //!< Accept ÀÛ¾÷ ÇÔ¼ö
|
BOOL ConnectProcess(); //!< Connect ÀÛ¾÷ ÇÔ¼ö
|
|
// ÀÔÃâ·ÂÀÌ ¿Ï·áµÇ¾úÀ» ó¸® ÇÔ¼ö.
|
BOOL RecvCompleteEvent(pPerSocketContext pPerSocketCtx, DWORD dwBytesTransferred); //!< ¸®½Ãºê À̺¥Æ® ó¸® Çڵ鷯 ÇÔ¼ö
|
BOOL SendCompleteEvent(pPerSocketContext pPerSocketCtx, DWORD dwBytesTransferred); //!< Send ¿Ï·á ÆÐŶ ó¸® Çڵ鷯 ÇÔ¼ö
|
BOOL OtherCompleteEvent(pPerSocketContext pPerSocketCtx, DWORD dwBytesTransferred); //!< Send,Recv Á¦¿Ü ¿Ï·á ÆÐŶ ó¸® Çڵ鷯 ÇÔ¼ö
|
|
void ProcessingThread(void); //!< ¿Ï·á ÆÐŶ ó¸® ÇÔ¼ö
|
|
private:
|
static BOOL m_bIsStartUp; ///< IOCP ¸ðµâ ½ÃÀÛ ¿©ºÎ
|
|
HANDLE m_hMutexLog; ///< Mutex °´Ã¼(Áߺ¹½ÇÇà¹æÁö)
|
CString m_strIP; ///< IP ÁÖ¼Ò(À¯´ÏÄÚµå)
|
CStringA m_straCurIP; ///< IP ÁÖ¼Ò(¸ÖƼ¹ÙÀÌÆ®)
|
int m_nPort; ///< Æ÷Æ®
|
|
NetworkMode m_NetMode; ///< IOCP µ¿ÀÛ ¸ðµå(¼¹ö/Ŭ¶óÀ̾ðÆ®)
|
|
// Log
|
char m_strFileName[MAX_PATH]; ///< ·Î±×¿ë(°æ·Î)
|
int m_nLogYear; ///< ·Î±×¿ë(³â)
|
int m_nLogMonth; ///< ·Î±×¿ë(¿ù)
|
int m_nLogDay; ///< ·Î±×¿ë(ÀÏ)
|
|
// Client Mode
|
pPerSocketContext m_pSocketCtx; ///< Ŭ¶óÀÌ¾ðÆ® ¼ÒÄÏ
|
BOOL m_bReconnect; ///< Ŭ¶óÀÌ¾ðÆ® ÀçÁ¢¼Ó ½Ãµµ ¿©ºÎ
|
BOOL m_bConnected; ///< Ŭ¶óÀÌ¾ðÆ® Á¢¼Ó ¿©ºÎ
|
HANDLE m_EventExitConnectThread; ///< Ŭ¶óÀÌ¾ðÆ® ConnectThread Á¾·á À̺¥Æ®
|
|
BOOL m_nExit; ///< IOCP Á¾·á µ¿±âÈ °´Ã¼
|
};
|