90 lines
1.6 KiB
C
90 lines
1.6 KiB
C
|
|
#pragma once
|
|||
|
|
|
|||
|
|
#include "NxMemPool.h"
|
|||
|
|
|
|||
|
|
struct NxAsyncEventType
|
|||
|
|
{
|
|||
|
|
enum
|
|||
|
|
{
|
|||
|
|
Event_None = 0,
|
|||
|
|
Event_Accept,
|
|||
|
|
Event_Connect,
|
|||
|
|
Event_Close,
|
|||
|
|
Event_Send,
|
|||
|
|
Event_Receive,
|
|||
|
|
Event_Timer,
|
|||
|
|
Event_Packet,
|
|||
|
|
Event_UserEvent
|
|||
|
|
};
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
class NxAsyncEventHandler;
|
|||
|
|
|
|||
|
|
const int ASYNC_EVENT_POOL_CNT = 2048;
|
|||
|
|
|
|||
|
|
/// <20><EFBFBD> I/O <20>۾<EFBFBD><DBBE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƿ<DEBE> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ü
|
|||
|
|
typedef struct NxAsyncEvent : OVERLAPPED//, NxPooled_Object<NxAsyncEvent, ASYNC_EVENT_POOL_CNT>
|
|||
|
|
{
|
|||
|
|
/// <20>̺<EFBFBD>Ʈ Ÿ<><C5B8>
|
|||
|
|
DWORD nEventType;
|
|||
|
|
/// <20>ۼ<EFBFBD><DBBC><EFBFBD> ũ<><C5A9>
|
|||
|
|
unsigned long nTransBytes;
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
|
|||
|
|
unsigned long nError;
|
|||
|
|
/// <20>̺<EFBFBD>Ʈ <20>ڵ鸵<DAB5><E9B8B5> <20><>ü
|
|||
|
|
NxAsyncEventHandler* pHandler;
|
|||
|
|
/// WSASend <20>ɾ<EFBFBD><C9BE><EFBFBD> <20><>Ŷ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void* pPacket;
|
|||
|
|
/// <20><><EFBFBD><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD>
|
|||
|
|
DWORD nUID;
|
|||
|
|
/// <20><><EFBFBD><EFBFBD> <20>̺<EFBFBD>Ʈ Ÿ<><C5B8>
|
|||
|
|
DWORD nUserEventType;
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>̺<EFBFBD>Ʈ Ÿ<><C5B8><EFBFBD><EFBFBD> Accept <20><> <20><><EFBFBD>쿡<EFBFBD><ECBFA1> Listen Port <20><><EFBFBD><EFBFBD> <20>ȴ<EFBFBD>.
|
|||
|
|
DWORD nExtra;
|
|||
|
|
|
|||
|
|
void Clear()
|
|||
|
|
{
|
|||
|
|
Internal = 0;
|
|||
|
|
InternalHigh = 0;
|
|||
|
|
Pointer = 0;
|
|||
|
|
hEvent = 0;
|
|||
|
|
Offset = 0;
|
|||
|
|
OffsetHigh = 0;
|
|||
|
|
hEvent = 0;
|
|||
|
|
|
|||
|
|
nEventType = 0;
|
|||
|
|
nTransBytes = 100;
|
|||
|
|
nError = 0;
|
|||
|
|
pHandler = NULL;
|
|||
|
|
pPacket = NULL;
|
|||
|
|
nUID = 0xffffffff;
|
|||
|
|
nUserEventType = 0;
|
|||
|
|
nExtra = 0;
|
|||
|
|
}
|
|||
|
|
}NxAsyncEvent;
|
|||
|
|
|
|||
|
|
class NxAsyncEventPool
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
static void Create(int nReserveSize);
|
|||
|
|
static void Destroy();
|
|||
|
|
static NxAsyncEvent* Alloc();
|
|||
|
|
static void Free(NxAsyncEvent* pEvent);
|
|||
|
|
private:
|
|||
|
|
static NxMemPool<NxAsyncEvent, ASYNC_EVENT_POOL_CNT> ms_Instance;
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// AsyncEvent <20><> <20>ڵ鸵 <20>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD>
|
|||
|
|
class NxAsyncEventHandler
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
NxAsyncEventHandler() { }
|
|||
|
|
virtual ~NxAsyncEventHandler() { }
|
|||
|
|
|
|||
|
|
virtual void HandleEvent( NxAsyncEvent* pEvent ) = 0;
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|