📄 cmoverlapped.h
字号:
#ifndef __CMOVERLAPPED_H
#define __CMOVERLAPPED_H
#include <WinSock2.h>
#include <mswsock.h>
namespace MatrixCore
{
namespace Network
{
#define PACKETBUFFERSIZE 4096
#define PACKETBUFFERMAXSIZE (PACKETBUFFERSIZE * 8)
//单捞鸥 惑怕
enum State { eCLOSE = 0,
eSERV_ACCEPT,
eACCEPT,
eREAD ,
eSEND ,
eEXIT
};
enum StateServer { eServer = 0,
eClient,
eClient_Wait, // 努扼捞攫飘 牢刘犬牢吝.
eClient_Testimony, // 努扼捞攫飘啊 牢刘登菌促.
eServerClient // 辑滚埃俊 立加茄 捞亥飘 家南
};
enum DetailStateOV {
eClientOV = 1,
eLoginServerOV,
eWorldServerOV,
eGameServerOV,
eDBAgentOV,
eLogServerOV
};
// 府矫宏茄 单捞鸥 惑怕
enum DataState {
eNormalRecv = 0 , // 扁夯 惑怕
eNoHeaderRecv, // 庆歹甫 促 给罐篮 惑怕
eNoDataRecv // 单捞鸥甫 促 给罐篮 惑怕
};
const enum { bs = PACKETBUFFERSIZE };
typedef struct _RecvIoContext
{
char AcceptBuf[bs]; // Accept buffer
char RecvBuf[bs]; // Recv buffer
char OnRecvBuf[PACKETBUFFERMAXSIZE]; // 单捞鸥啊 努锭 贸府 滚欺. Recv滚欺狼 4硅.
_RecvIoContext()
{
memset(AcceptBuf,0,sizeof(AcceptBuf));
memset(RecvBuf,0,sizeof(RecvBuf));
memset(OnRecvBuf,0,sizeof(OnRecvBuf));
}
} RECVIOCONTEXT, *PRECVIOCONTEXT;
typedef struct _SendIoContext
{
void* pThisPoint;
volatile long *iSendCnt; // send Ref Count
_SendIoContext()
{
// memcpy( AcceptBuf, o.AcceptBuf, bs );
}
} SENDIOCONTEXT, *PSENDIOCONTEXT;
class CMOVERLAPPED: public OVERLAPPED
{
public:
int addrlen;
DataState eRecvState; // Recv茄 单捞鸥 贸府甫 困茄 敲贰弊.
int iMoreRecv; // Recv茄 单捞鸥啊 促 给罐篮版快俊 倔付唱 歹 罐酒具且 荤捞令
State eState; // 荤侩磊啊 楷搬登菌阑锭 惑怕 recv , accept
SOCKET s; // 家南 勤甸
DWORD dwBytesTransfer; // 府胶宏等 官捞飘 肮荐
sockaddr_in Local, ClientAddr; // 肺拿,努扼捞攫飘 IP Address
PRECVIOCONTEXT pRecvContext; //
SENDIOCONTEXT SendIoContext; // 器牢磐 屈捞 酒聪促.. send绰 弊成 棱酒 林菌促.
short sOverlappedID; // 坷滚乏 硅凯 ID
DWORD dwRandomID; // 荤侩磊付促 罚待 绊蜡 酒捞叼
unsigned short sReplayAttack; // 鞍篮 菩哦 滴锅篮 倾侩窍瘤 臼绰促.. (歹 碍拳窍咯具 窍唱 蓖满促...)
WSABUF recvBufferDescriptor;
WSABUF sendBufferDescriptor;
DWORD recvFlags; // needed by WSARecv()
int iRecvQueueNum; // 霸烙辑滚俊辑 绢蠢钮俊 甸绢哎瘤甫 搬沥茄促. 叼弃飘绰 0
StateServer iAcceptServer; // 立加茄 辑滚啊 绢恫 辑滚牢瘤 八祸.
int iAccountID; // 拌沥狼 绊蜡 侥喊 锅龋.
char cAccountName[17]; // 拌沥 捞抚..
void * pKeyComplete;
int iCharIndex; // 某腐磐狼 绊蜡 锅龋.
short sCharMemIndex; // 某腐磐 单捞鸥啊 甸绢乐绰 牢郸胶 锅龋
short sAccMemIndex; // 拌沥 单捞鸥啊 甸绢乐绰 牢郸胶 锅龋
int iCharNodeIndex; // 某腐磐 甘畴靛 牢郸胶 锅龋. 捞吧风 甘俊 拱妨 乐绰巴阑 八祸且荐 乐促.
int *iTileIndex; // 甘俊 割锅掳 鸥老俊 拱妨乐绰瘤 舅荐 乐促.. 捞蔼篮 咯扁辑 例措 write且荐 绝促.
DetailStateOV iDetailServer; // 捞 坷滚乏 备炼眉啊 绢蠢 辑滚俊 楷搬等 巴牢瘤俊措茄 疙技.
//? test侩 函荐.窃荐 昏力秦具 茄促.
DWORD dwTimeTest;
int iMsgCntTest;
int iTestDebug;
int iTestDebug1;
CMOVERLAPPED(): iRecvQueueNum(0),iMoreRecv(0) ,eState( eCLOSE ),eRecvState ( eNormalRecv ), s( SOCKET_ERROR ),addrlen(sizeof sockaddr_in + 16)
{
iTileIndex = NULL;
sCharMemIndex = 0;
Internal = InternalHigh = Offset = OffsetHigh = 0; hEvent = 0;
SendIoContext.pThisPoint = NULL;
SendIoContext.iSendCnt = NULL;
iMsgCntTest = 0;
iCharIndex = 0;
iDetailServer = eClientOV;
iTestDebug1 = 0;
}
CMOVERLAPPED( const CMOVERLAPPED &o )
{
iMoreRecv = o.iMoreRecv;
eRecvState = o.eRecvState;
eState = o.eState;
s = o.s;
dwBytesTransfer = o.dwBytesTransfer;
Local = o.Local;
ClientAddr = o.ClientAddr;
// memcpy( MatrixCore::Network::CMOVERLAPPED::pRecvContext->AcceptBuf, o.AcceptBuf, bs );
}
~CMOVERLAPPED() { }
void InitOverLapped()
{
iMoreRecv = 0;
eRecvState = eNormalRecv;
eState = eACCEPT;
sCharMemIndex = 0; // 檬扁拳
sAccMemIndex = 0;
iTileIndex = NULL;
iCharNodeIndex = 0;
pKeyComplete = NULL;
iAccountID = 0;
if(eServer != iAcceptServer && eServerClient != iAcceptServer)
{
iAcceptServer = eClient;
}
else
{
iAcceptServer = eServer;
}
}
};
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -