Initial commit
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
#ifndef IOCmpltThreadH
|
||||
#define IOCmpltThreadH
|
||||
|
||||
#include <winsock2.h>
|
||||
#include <list>
|
||||
#include "Thread.h"
|
||||
|
||||
#define PORT 12071
|
||||
#define DATA_BUFSIZE 8192
|
||||
#define MAX_PROCESSOR_COUNTER 22 //最多定义22个处理器
|
||||
|
||||
enum SERVER_COMPLETE_KEY
|
||||
{
|
||||
COMPLETION_KEY_RECV = 0,
|
||||
COMPLETION_KEY_SEND = 1,
|
||||
COMPLETION_KEY_SHUTDOWN = 2,
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
SERVER_COMPLETE_KEY iOperation;
|
||||
int nTimeCount;
|
||||
SOCKET socket;
|
||||
OVERLAPPED overlapped;
|
||||
WSABUF dataBuf;
|
||||
char buffer[DATA_BUFSIZE];
|
||||
unsigned int peerIp;
|
||||
unsigned short peerPort;
|
||||
} CONTEXT_KEY, * LPCONTEXT_KEY;
|
||||
|
||||
using namespace std;
|
||||
typedef list< LPCONTEXT_KEY > CONTEXTKEYLIST;
|
||||
|
||||
class CIOCmpltThread : public CThread
|
||||
{
|
||||
public:
|
||||
void Main();
|
||||
CIOCmpltThread(unsigned int nStackSize);
|
||||
virtual void Terminate();
|
||||
bool IsValidContextKey( LPCONTEXT_KEY lpContextKey );
|
||||
void FreeContextKey( LPCONTEXT_KEY lpContextKey );
|
||||
void OnTimer();
|
||||
|
||||
private:
|
||||
SOCKET m_hListenSocket;
|
||||
HANDLE m_hWorkerThread[MAX_PROCESSOR_COUNTER];
|
||||
int m_nWorkerThreadNumbers;
|
||||
CSema m_smProcess;
|
||||
|
||||
CONTEXTKEYLIST m_lstContextKeys;
|
||||
};
|
||||
|
||||
DWORD WINAPI ServerWorkerThread(LPVOID CompletionPortID);
|
||||
|
||||
#endif //_IOCMPLTTHREAD_H_
|
||||
Reference in New Issue
Block a user