90 lines
2.4 KiB
C
90 lines
2.4 KiB
C
![]() |
#ifndef __IOCP_H_
|
|||
|
#define __IOCP_H_
|
|||
|
|
|||
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
|
|||
|
#include <winsock2.h>
|
|||
|
#include <mswsock.h>
|
|||
|
|
|||
|
#include <windows.h>
|
|||
|
|
|||
|
#include "DataStruct.h"
|
|||
|
#include "KeyList.h"
|
|||
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
|
|||
|
static GUID g_GUIDAcceptEx = WSAID_ACCEPTEX;
|
|||
|
static GUID g_GUIDTransmitFile = WSAID_TRANSMITFILE;
|
|||
|
static GUID g_GUIDAcceptExaddrs = WSAID_GETACCEPTEXSOCKADDRS;
|
|||
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
|
|||
|
|
|||
|
class CIOCP
|
|||
|
{
|
|||
|
public:
|
|||
|
CIOCP();
|
|||
|
virtual ~CIOCP();
|
|||
|
public:
|
|||
|
CSmsCenterDlg * m_pDlg;
|
|||
|
CKeyList m_KeyList;
|
|||
|
//IO_GROUP m_io_group;
|
|||
|
//KEY_GROUP m_key_group;
|
|||
|
|
|||
|
HANDLE m_h_iocp;
|
|||
|
SOCKET m_listen_socket;
|
|||
|
BOOL m_bInitSocket;
|
|||
|
SOCKET m_listen_socket2;
|
|||
|
BOOL m_bInitSocket2;
|
|||
|
BOOL m_bInit; //<2F>Ƿ<EFBFBD><C7B7>ѳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD>
|
|||
|
|
|||
|
LPFN_TRANSMITFILE lpTransmitFile;
|
|||
|
LPFN_ACCEPTEX lpAcceptEx;
|
|||
|
LPFN_GETACCEPTEXSOCKADDRS lpGetAcceptExSockAddrs;
|
|||
|
|
|||
|
UINT uPort;
|
|||
|
TCHAR szAddress[32];
|
|||
|
|
|||
|
int m_n_thread_count;
|
|||
|
HANDLE m_h_thread[MAXTHREAD_COUNT];
|
|||
|
HANDLE m_h_accept_event;
|
|||
|
HANDLE m_h_accept_event2;
|
|||
|
HANDLE m_h_MainLoop;
|
|||
|
HANDLE m_h_MainLoop2;
|
|||
|
BOOL m_bQuit;
|
|||
|
|
|||
|
public:
|
|||
|
static DWORD WINAPI MainLoop2(LPVOID lp_param);
|
|||
|
void CheckForInvalidSQLConnection();
|
|||
|
void CheckForInvalidConnection();
|
|||
|
void InitIoContext_Send(IOCP_IO_SEND_PTR lp_io);
|
|||
|
void Close();
|
|||
|
void SetDlg( CSmsCenterDlg * pDlg );
|
|||
|
long GetFrame_Cmpp(IOCP_IO_PTR lp_io);
|
|||
|
long GetFrame(IOCP_IO_PTR lp_io);
|
|||
|
BOOL RegAcceptEvent2();
|
|||
|
BOOL RegAcceptEvent();
|
|||
|
BOOL PostAcceptEx2();
|
|||
|
BOOL PostAcceptEx();
|
|||
|
void CloseOneSocket( SOCKET & socket );
|
|||
|
BOOL GetFunPointer();
|
|||
|
BOOL BindAndListenSocket2();
|
|||
|
BOOL BindAndListenSocket();
|
|||
|
void CloseMainSocket();
|
|||
|
BOOL Init();
|
|||
|
static DWORD WINAPI MainLoop(LPVOID lp_param);
|
|||
|
private:
|
|||
|
void InitIoContext(IOCP_IO_PTR lp_io);
|
|||
|
BOOL DataAction(IOCP_IO_PTR lp_io,IOCP_KEY_PTR lp_key);
|
|||
|
BOOL HandleData(IOCP_IO_PTR lp_io,IOCP_KEY_PTR lp_key,int nFlags);
|
|||
|
|
|||
|
BOOL StartThread();
|
|||
|
void CloseThreadHandle( int count );
|
|||
|
BOOL InitSocket();
|
|||
|
static DWORD WINAPI CompletionRoutine(LPVOID lp_param);
|
|||
|
BOOL GetAddrAndPort(char*buf,char ip[],UINT &port);
|
|||
|
};
|
|||
|
|
|||
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
|
|||
|
#endif //__IOCP_H_
|
|||
|
|