/*//=============================================================== << EVENTSELECT TCP CLIENT SESSION >> PRGM : B4nFter FILE : EVENTSELECTTCPCLIENTSESSION.H, EVENTSELECTTCPCLIENTSESSION.INL DESC : CEventSelectTcpClient Ŭ·¡½ºÀÇ °ü¸®¸¦ ¹Þ´Â ¼¼¼Ç Ŭ·¡½º INIT BUILT DATE : 2005. 11. 21 LAST BUILT DATE : 2005. 11. 21 Copyright¨Ï 2002~2009 B4nFter (b4nfter@gmail.com) and Co-Writers. All Rights Reserved. *///=============================================================== #pragma once /////////////////////////////////////////////////////////////////// // INCLUDE /////////////////////////////////////////////////////////////////// #include "WINSOCKBASE.HPP" #include "SESSIONBASE.HPP" #include "IOBUFFER.HPP" /////////////////////////////////////////////////////////////////// // DEFINE /////////////////////////////////////////////////////////////////// template class CEventSelectTcpClient; /////////////////////////////////////////////////////////////////// // DECLARATION /////////////////////////////////////////////////////////////////// //*--------------------------------------------------------------- // TYPE : CLASS // NAME : CEventSelectTcpClientSession //*--------------------------------------------------------------- // DESC : EventSelect TCP Ŭ¶óÀÌ¾ðÆ® ¼¼¼Ç Ŭ·¡½º // PRGM : B4nFter //*--------------------------------------------------------------- template class CEventSelectTcpClientSession : public CSessionBase { public: typedef CSessionBase TP_SUPER; public: CEventSelectTcpClientSession(); virtual ~CEventSelectTcpClientSession(); virtual VOID Reset(); BOOL Connect(LPCSTR lpszIpAddress, WORD wPortNumber); BOOL Connect(ULONG uIpAddress, WORD wPortNumber); VOID Disconnect(); BOOL CreateBuffer(INT iRecvBufferSize, INT iSendBufferSize); VOID DeleteBuffer(); BOOL CreateSocket(); BOOL RecvData(); BOOL SendData(LPBYTE lpbtBuffer, INT iBufferSize, BOOL bDoLock = TRUE); INT SendLeftData(); VOID SetEventHandle(HANDLE hEvent) { m_hEvent = hEvent; } HANDLE GetEventHandle() { return m_hEvent; } BOOL GetIsActivated() const { return m_bIsActivated; } VOID SetIsActivated(BOOL bIsActivated) { m_bIsActivated = bIsActivated; } VOID SetEventSelectTcpClientPtr(CEventSelectTcpClient* lpEventSelectTcpClient) { m_lpEventSelectTcpClient = lpEventSelectTcpClient; } CEventSelectTcpClient* GetEventSelectTcpClientPtr() { return m_lpEventSelectTcpClient; } VOID SetRemoteSockAddrIn(SOCKADDR_IN& stRemoteSockAddrIn) { m_stRemoteSockAddrIn = stRemoteSockAddrIn; } const SOCKADDR_IN& GetRemoteSockAddrIn() const { return m_stRemoteSockAddrIn; } ULONG GetRemoteIpAddressN() const { return m_stRemoteSockAddrIn.sin_addr.s_addr; } ULONG GetRemoteIpAddressH() const { return ::ntohl(m_stRemoteSockAddrIn.sin_addr.s_addr); } WORD GetRemotePortNumberN() const { return m_stRemoteSockAddrIn.sin_port; } WORD GetRemotePortNumberH() const { return ::ntohs(m_stRemoteSockAddrIn.sin_port); } LPCSTR GetRemoteIpAddressString() const { return ::inet_ntoa(m_stRemoteSockAddrIn.sin_addr);} CIoBuffer* GetRecvIoBuffer() { return &m_RecvIoBuffer; } CIoBuffer* GetSendIoBuffer() { return &m_SendIoBuffer; } VOID SetBaseNotifyProc(LPFN_BASE_NOTIFY_PROC lpfnBaseNotifyProc, LPVOID lpBaseNotifyProcParam) { m_lpfnBaseNotifyProc = lpfnBaseNotifyProc; m_lpBaseNotifyProcParam = lpBaseNotifyProcParam; } LPFN_BASE_NOTIFY_PROC GetBaseNotifyProc() { return m_lpfnBaseNotifyProc; } LPVOID GetBaseNotifyProcParam() { return m_lpBaseNotifyProcParam; } VOID SetRecvNotifyProc(LPFN_RECV_NOTIFY_PROC lpfnRecvNotifyProc, LPVOID lpRecvNotifyProcParam) { m_lpfnRecvNotifyProc = lpfnRecvNotifyProc; m_lpRecvNotifyProcParam = lpRecvNotifyProcParam; } LPFN_RECV_NOTIFY_PROC GetRecvNotifyProc() { return m_lpfnRecvNotifyProc; } LPVOID GetRecvNotifyProcParam() { return m_lpRecvNotifyProcParam; } // !!! ÁÖÀÇ - CSessionBase ·Î ºÎÅÍÀÇ ¼ø¼ö°¡»ó ÇÔ¼ö ÀÜ¿©ºÎºÐ Á¤ÀÇ (Çü½Ä»óÀÌ¸ç »ç¿ëÇÏÁö ¾ÊÀ½) #pragma warning (disable:4100) BOOL SendData(LPBYTE lpbtBuffer, INT iBufferSize, LPCSTR lpszIpAddress, WORD wPortNumber, BOOL bDoLock = TRUE) { UNUSED_ALWAYS(lpbtBuffer), UNUSED_ALWAYS(iBufferSize), UNUSED_ALWAYS(lpszIpAddress), UNUSED_ALWAYS(wPortNumber), UNUSED_ALWAYS(bDoLock); return FALSE; } BOOL SendData(LPBYTE lpbtBuffer, INT iBufferSize, ULONG uIpAddress, WORD wPortNumber, BOOL bDoLock = TRUE) { UNUSED_ALWAYS(lpbtBuffer), UNUSED_ALWAYS(iBufferSize), UNUSED_ALWAYS(uIpAddress), UNUSED_ALWAYS(wPortNumber), UNUSED_ALWAYS(bDoLock); return FALSE; } #pragma warning (default:4100) private: BOOL Initialize(); VOID Finalize(); VOID CloseSocket(); protected: VOID DisconnectNoLock(); VOID MoveLeftRecvBufferToHead(); VOID MoveLeftSendBufferToHead(); VOID SaveErrorMessage(INT iErrorCode, LPCTSTR lpszErrorMessage = NULL); private: HANDLE m_hEvent; CEventSelectTcpClient* m_lpEventSelectTcpClient; SOCKADDR_IN m_stRemoteSockAddrIn; CIoBuffer m_RecvIoBuffer; CIoBuffer m_SendIoBuffer; BOOL m_bIsActivated; LPFN_BASE_NOTIFY_PROC m_lpfnBaseNotifyProc; LPFN_RECV_NOTIFY_PROC m_lpfnRecvNotifyProc; LPVOID m_lpBaseNotifyProcParam; LPVOID m_lpRecvNotifyProcParam; };