www.pudn.com > LoginGate.rar > LoginGate.h



#ifndef _LOGINGATE_DEFINE
#define _LOGINGATE_DEFINE

class CSessionInfo
{
public:
SOCKET sock;

OVERLAPPED Overlapped;
WSABUF DataBuf;
CHAR Buffer[DATA_BUFSIZE];
int bufLen;

public:
// ORZ:
CSessionInfo()
{
bufLen = 0;
}

int Recv()
{
DWORD nRecvBytes = 0, nFlags = 0;

DataBuf.len = DATA_BUFSIZE - bufLen;
DataBuf.buf = Buffer + bufLen;

memset( &amt;Overlapped, 0, sizeof( Overlapped ) );

return WSARecv( sock, &amt;DataBuf, 1, &amt;nRecvBytes, &amt;nFlags, &amt;Overlapped, 0 );
}

bool HasCompletionPacket()
{
return memchr( Buffer, '!', bufLen ) ? true : false;
}

// recv ¹öÆÛ¿¡¼­ ¿Ï¼ºµÈ ÇϳªÀÇ ÆÐŶÀ» »Ì¾Æ³½´Ù.
char * ExtractPacket( char *pPacket )
{
int packetLen = (char *) memchr( Buffer, '!', bufLen ) - Buffer + 1;

memcpy( pPacket, Buffer, packetLen );

memmove( Buffer, Buffer + packetLen, DATA_BUFSIZE - packetLen );
bufLen -= packetLen;

return pPacket + packetLen;
}
};


void InsertLogMsg(UINT nID);
void InsertLogMsg(LPTSTR lpszMsg);
void InsertLogPacket(char *pszPacket);

#endif //_LOGINGATE_DEFINE