📄 cmworkthread.cpp
字号:
else if(OV.eRecvState == eNoHeaderRecv) //庆歹甫 眠啊肺 罐绰版快.
{
//罐篮单捞鸥 - 佬篮 单捞鸥 >= 庆歹 农扁搁 曼...
if(iReadTotalSize >= OV.iMoreRecv )
{
memcpy(OV.pRecvContext->OnRecvBuf + PACKETHEADERSIZE - OV.iMoreRecv,OV.pRecvContext->RecvBuf+iReadSize, OV.iMoreRecv);
//庆歹 菩哦捞 鞠龋拳 登绢 乐栏搁 钱绢霖促.
if(FALSE == pQueue->PackDecode(OV.pRecvContext->OnRecvBuf))
{
// 菩哦 庆歹啊 力措肺 救登菌促.
// 碍力 立加 辆丰.
DoClose(OV,true);
CMSingleton<CMDebug>::getInstance()->output("%s(%d)秦欧 啊瓷己 丑饶.!!!(%d)",__FILE__,__LINE__,OV.s);
return DEF_WORKREADERR_DECODE_ERR;
}
// 庆歹 菩哦 盒籍.
pQueue->GetHeaderInfo(OV.pRecvContext->OnRecvBuf,&sID,&sDataSize,&sReplayID);
// 菩哦狼 罚待蔼捞 捞傈 菩哦苞 鞍促搁.
if(OV.iAcceptServer == eServer || OV.iAcceptServer == eServerClient)
{
}
else
{
if(OV.sReplayAttack == sReplayID)
{
// 碍力 立加 辆丰.
DoClose(OV,true);
CMSingleton<CMDebug>::getInstance()->output("%s(%d)秦欧 啊瓷己 丑饶.!!!(%d)",__FILE__,__LINE__,OV.s);
return DEF_WORKREADERR_REPLAY_ERR;
}
}
//府敲饭捞 傍拜 抗规
OV.sReplayAttack = sReplayID;
// 茄菩哦捞 单捞鸥 + 庆歹 何盒捞 肯寒窍霸 佬阑荐 乐霸 贸府 茄促.
if(iReadTotalSize - OV.iMoreRecv >= (int) sDataSize )
{
// 皋葛府甫 墨乔茄促.
memcpy(OV.pRecvContext->OnRecvBuf + PACKETHEADERSIZE ,OV.pRecvContext->RecvBuf + iReadSize + OV.iMoreRecv, sDataSize);
// 钮俊 单捞鸥甫 楷搬秦霖促.
if( pQueue->PackPush(OV.s
, OV.pRecvContext->OnRecvBuf // 佬篮 单捞鸥 第肺 器牢磐 捞悼.
,sDataSize + PACKETHEADERSIZE,OV.dwRandomID,&OV) == FALSE)
{
// 钮啊 菜茫促. 例措 咯扁 救客具 茄促.. 荤侩磊啊 腹栏聪.. 立加 辆丰 矫虐磊.
// 碍力 立加 辆丰.
DoClose(OV,true);
CMSingleton<CMDebug>::getInstance()->output("%s(%d)Recv Queue PUSH FAIL(CRITICAL WARNNING!!)",__FILE__,__LINE__);
return DEF_WORKREADERR_MEMORYFULL_ERR;
}
iReadSize += (OV.iMoreRecv + sDataSize);
// 函荐 檬扁拳.
OV.iMoreRecv = 0;
OV.eRecvState = eNormalRecv;
}
else
{
//单捞鸥 菩哦阑 促 给罐篮 版快 歹罐酒具 茄促.
OV.eRecvState = eNoDataRecv;
//皋葛府甫 墨乔 秦初绰促.
memcpy(OV.pRecvContext->OnRecvBuf + PACKETHEADERSIZE ,OV.pRecvContext->RecvBuf + iReadSize + OV.iMoreRecv,iReadTotalSize - iReadSize - OV.iMoreRecv);
// 给佬篮 单捞鸥 菩哦箭磊甫 历厘茄促.
OV.iMoreRecv = ( OV.iMoreRecv + sDataSize ) - iReadTotalSize ;
//佬篮 单捞鸥 荐甫 历厘茄促.
//OV.iMoreRecv = iReadTotalSize - iReadSize;
break;
}
}
else
{
//皋葛府甫 墨乔 秦初绰促.
memcpy(OV.pRecvContext->OnRecvBuf + PACKETHEADERSIZE - OV.iMoreRecv,OV.pRecvContext->RecvBuf + iReadSize,iReadTotalSize - iReadSize);
// 给佬篮 单捞鸥 庆歹 菩哦箭磊甫 历厘茄促.
OV.iMoreRecv = OV.iMoreRecv - iReadTotalSize;
//佬篮 单捞鸥 荐甫 历厘茄促.
//OV.iMoreRecv = iReadTotalSize - iReadSize;
break;
}
}
else
{
//OV.eRecvState 俊矾.
}
}
if(PostRecv( OV) != TRUE)
return DEF_WORKREADERR_RECV_ERR;
return iRet;
}
//-------------------------------------------------------------------------------------------------------
// Name :: _OnRead(CMOVERLAPPED &OV, char *pData,int iSize,int MsgType)
// Create Date :: 2003/03/07
// Description :: 庆歹客 单捞鸥 菩哦阑 盒籍窍绊 磊弗促.
// 扼涝 寇何俊辑 况目静饭靛甫 倒副锭 敬促.
// param ::
// Return Value :: int 鸥涝
// Bug Report ::
//-------------------------------------------------------------------------------------------------------
int CMWorkerThread::_OnRead(CMOVERLAPPED &OV, char **pData,int *iSize,int *iProtocolID,int *MsgType)
{
int iRet = DEF_WORKREAD_COMPLETE_OK;
unsigned short sID;
unsigned short sGameType = 0;
unsigned short sDataSize = 0;
unsigned short sReplayID = 0;
//佬篮 单捞鸥甫 促 贸府 且锭鳖瘤 捣促.
for(int iReadTotalSize = OV.dwBytesTransfer ; iReadTotalSize > m_iReadSize ; )
{
if(OV.eRecvState == eNormalRecv) // 单捞鸥 畴钢肺 罐绰何盒.
{
//罐篮单捞鸥 - 佬篮 单捞鸥 >= 庆歹 农扁搁 曼...
if(iReadTotalSize - m_iReadSize >= PACKETHEADERSIZE )
{
// 庆歹 菩哦 盒籍.
if(FALSE == m_pQueue->PackDecode(OV.pRecvContext->RecvBuf + m_iReadSize)) //庆歹 菩哦捞 鞠龋拳 登绢 乐栏搁 钱绢霖促.
{
// 菩哦 庆歹啊 力措肺 救登菌促.
// 碍力 立加 辆丰.
// DoClose(OV,true);
CMSingleton<CMDebug>::getInstance()->output("%s(%d)秦欧 啊瓷己 丑饶.!!!(%d)",__FILE__,__LINE__,OV.s);
return DEF_WORKREADERR_DECODE_ERR;
}
m_pQueue->GetHeaderInfo(OV.pRecvContext->RecvBuf + m_iReadSize,&sID,&sGameType,&sDataSize,&sReplayID);
// 菩哦狼 罚待蔼捞 捞傈 菩哦苞 鞍促搁.
if(OV.iAcceptServer == eServer || OV.iAcceptServer == eServerClient)
{
}
else
{
if(OV.sReplayAttack == sReplayID)
{
// 碍力 立加 辆丰.
*iProtocolID = sID;
*MsgType = sGameType;
// DoClose(OV,true);
CMSingleton<CMDebug>::getInstance()->output("%s(%d)秦欧 啊瓷己 丑饶.!!!(%d)",__FILE__,__LINE__,OV.s);
return DEF_WORKREADERR_REPLAY_ERR;
}
}
//府敲饭捞 傍拜 抗规
OV.sReplayAttack = sReplayID;
// 茄菩哦捞 单捞鸥 + 庆歹 何盒捞 肯寒窍霸 佬阑荐 乐霸 贸府 茄促.
if(iReadTotalSize >= (int) sDataSize + PACKETHEADERSIZE +m_iReadSize )
{
// 钮俊 单捞鸥甫 楷搬秦霖促.
//if( pQueue->PackPush(OV.s
// , OV.pRecvContext->RecvBuf + m_iReadSize // 佬篮 单捞鸥 第肺 器牢磐 捞悼.
// ,sDataSize + PACKETHEADERSIZE,OV.dwRandomID,&OV)
// == FALSE)
//{
// // 钮啊 菜茫促. 例措 咯扁 救客具 茄促.. 荤侩磊啊 腹栏聪.. 立加 辆丰 矫虐磊.
// // 碍力 立加 辆丰.
// DoClose(OV,true);
// CMSingleton<CMDebug>::getInstance()->output("%s(%d)Recv Queue PUSH FAIL(CRITICAL WARNNING!!)",__FILE__,__LINE__);
// return DEF_WORKREADERR_MEMORYFULL_ERR;
//}
*pData = OV.pRecvContext->RecvBuf + m_iReadSize;
*iSize = sDataSize + PACKETHEADERSIZE;
*iProtocolID = sID;
*MsgType = sGameType;
// 单捞鸥 荤捞令 父怒 刘啊.
m_iReadSize += (sDataSize + PACKETHEADERSIZE);
// 函荐 檬扁拳.
OV.iMoreRecv = 0;
OV.eRecvState = eNormalRecv;
return DEF_WORKREAD_OK;
}
else
{
// 单捞鸥 农扁甫 呈公 农霸 焊郴芭唱 秦欧 惑炔?
if(sDataSize > PACKETBUFFERSIZE)
{
// 捞荤侩磊绰 碍力 立加 矫难具茄促. 贸府 鞘荐... //?
}
//单捞鸥 菩哦阑 促 给罐篮 版快 歹罐酒具 茄促.
OV.eRecvState = eNoDataRecv;
//皋葛府甫 墨乔 秦初绰促.
memcpy(OV.pRecvContext->OnRecvBuf,OV.pRecvContext->RecvBuf + m_iReadSize,iReadTotalSize - m_iReadSize);
// 给佬篮 单捞鸥 菩哦箭磊甫 历厘茄促.
OV.iMoreRecv = ( PACKETHEADERSIZE + sDataSize ) - (iReadTotalSize - m_iReadSize);
//佬篮 单捞鸥 荐甫 历厘茄促.
//OV.iMoreRecv = iReadTotalSize - m_iReadSize;
iRet = DEF_WORKREAD_ONREAD_OK;
break;
}
}
else
{
//庆歹 菩哦阑 促 给罐篮 版快 歹罐酒具 茄促.
OV.eRecvState = eNoHeaderRecv;
//皋葛府甫 墨乔 秦初绰促.
memcpy(OV.pRecvContext->OnRecvBuf,OV.pRecvContext->RecvBuf + m_iReadSize,iReadTotalSize - m_iReadSize);
// 给佬篮 单捞鸥 庆歹 菩哦箭磊甫 历厘茄促.
OV.iMoreRecv = PACKETHEADERSIZE - (iReadTotalSize - m_iReadSize);
//佬篮 单捞鸥 荐甫 历厘茄促.
//OV.iMoreRecv = iReadTotalSize - m_iReadSize;
iRet = DEF_WORKREAD_ONREAD_OK;
break;
}
}
else if(OV.eRecvState == eNoDataRecv) //单捞鸥甫 眠啊肺 罐绰版快.
{
// 庆歹 菩哦 盒籍.
m_pQueue->GetHeaderInfo(OV.pRecvContext->OnRecvBuf,&sID,&sGameType,&sDataSize,&sReplayID);
// 茄菩哦捞 单捞鸥 + 庆歹 何盒捞 肯寒窍霸 佬阑荐 乐霸 贸府 茄促.
if(iReadTotalSize >= OV.iMoreRecv )
{
// 皋葛府甫 墨乔茄促.
memcpy(OV.pRecvContext->OnRecvBuf + PACKETHEADERSIZE + sDataSize - OV.iMoreRecv,OV.pRecvContext->RecvBuf + m_iReadSize,OV.iMoreRecv);
m_pQueue->GetHeaderInfo(OV.pRecvContext->OnRecvBuf,&sID,&sGameType,&sDataSize,&sReplayID);
*pData = OV.pRecvContext->OnRecvBuf;
*iSize = sDataSize + PACKETHEADERSIZE;
*iProtocolID = sID;
*MsgType = sGameType;
m_iReadSize += OV.iMoreRecv;
// 函荐 檬扁拳.
OV.iMoreRecv = 0;
OV.eRecvState = eNormalRecv;
return DEF_WORKREAD_OK;
}
else
{
//皋葛府甫 墨乔 秦初绰促.
memcpy(OV.pRecvContext->OnRecvBuf + PACKETHEADERSIZE + sDataSize - OV.iMoreRecv,OV.pRecvContext->RecvBuf + m_iReadSize,iReadTotalSize - m_iReadSize);
// 给佬篮 单捞鸥 菩哦箭磊甫 历厘茄促. (捞繁版快绰 喊风 绝绢具 窍绰叼..)
OV.iMoreRecv = OV.iMoreRecv - iReadTotalSize;
iRet = DEF_WORKREAD_ONREAD_OK;
break;
}
}
else if(OV.eRecvState == eNoHeaderRecv) //庆歹甫 眠啊肺 罐绰版快.
{
//罐篮单捞鸥 - 佬篮 单捞鸥 >= 庆歹 农扁搁 曼...
if(iReadTotalSize >= OV.iMoreRecv )
{
memcpy(OV.pRecvContext->OnRecvBuf + PACKETHEADERSIZE - OV.iMoreRecv,OV.pRecvContext->RecvBuf+m_iReadSize, OV.iMoreRecv);
//庆歹 菩哦捞 鞠龋拳 登绢 乐栏搁 钱绢霖促.
if(FALSE == m_pQueue->PackDecode(OV.pRecvContext->OnRecvBuf))
{
// 菩哦 庆歹啊 力措肺 救登菌促.
// 碍力 立加 辆丰.
// DoClose(OV,true);
CMSingleton<CMDebug>::getInstance()->output("%s(%d)秦欧 啊瓷己 丑饶.!!!(%d)",__FILE__,__LINE__,OV.s);
return DEF_WORKREADERR_DECODE_ERR;
}
// 庆歹 菩哦 盒籍.
m_pQueue->GetHeaderInfo(OV.pRecvContext->OnRecvBuf,&sID,&sGameType,&sDataSize,&sReplayID);
// 菩哦狼 罚待蔼捞 捞傈 菩哦苞 鞍促搁.
if(OV.iAcceptServer == eServer || OV.iAcceptServer == eServerClient)
{
}
else
{
if(OV.sReplayAttack == sReplayID)
{
// 碍力 立加 辆丰.
*iProtocolID = sID;
*MsgType = sGameType;
// DoClose(OV,true);
CMSingleton<CMDebug>::getInstance()->output("%s(%d)秦欧 啊瓷己 丑饶.!!!(%d)",__FILE__,__LINE__,OV.s);
return DEF_WORKREADERR_REPLAY_ERR;
}
}
//府敲饭捞 傍拜 抗规
OV.sReplayAttack = sReplayID;
// 茄菩哦捞 单捞鸥 + 庆歹 何盒捞 肯寒窍霸 佬阑荐 乐霸 贸府 茄促.
if(iReadTotalSize - OV.iMoreRecv >= (int) sDataSize )
{
// 皋葛府甫 墨乔茄促.
memcpy(OV.pRecvContext->OnRecvBuf + PACKETHEADERSIZE ,OV.pRecvContext->RecvBuf + m_iReadSize + OV.iMoreRecv, sDataSize);
//// 钮俊 单捞鸥甫 楷搬秦霖促.
//if( pQueue->PackPush(OV.s
// , OV.pRecvContext->OnRecvBuf // 佬篮 单捞鸥 第肺 器牢磐 捞悼.
// ,sDataSize + PACKETHEADERSIZE,OV.dwRandomID,&OV) == FALSE)
//{
// // 钮啊 菜茫促. 例措 咯扁 救客具 茄促.. 荤侩磊啊 腹栏聪.. 立加 辆丰 矫虐磊.
// // 碍力 立加 辆丰.
// DoClose(OV,true);
// CMSingleton<CMDebug>::getInstance()->output("%s(%d)Recv Queue PUSH FAIL(CRITICAL WARNNING!!)",__FILE__,__LINE__);
// return DEF_WORKREADERR_MEMORYFULL_ERR;
//}
*pData = OV.pRecvContext->OnRecvBuf;
*iSize = sDataSize + PACKETHEADERSIZE;
*iProtocolID = sID;
*MsgType = sGameType;
m_iReadSize += (OV.iMoreRecv + sDataSize);
// 函荐 檬扁拳.
OV.iMoreRecv = 0;
OV.eRecvState = eNormalRecv;
return DEF_WORKREAD_OK;
}
else
{
//单捞鸥 菩哦阑 促 给罐篮 版快 歹罐酒具 茄促.
OV.eRecvState = eNoDataRecv;
//皋葛府甫 墨乔 秦初绰促.
memcpy(OV.pRecvContext->OnRecvBuf + PACKETHEADERSIZE ,OV.pRecvContext->RecvBuf + m_iReadSize + OV.iMoreRecv,iReadTotalSize - m_iReadSize - OV.iMoreRecv);
// 给佬篮 单捞鸥 菩哦箭磊甫 历厘茄促.
OV.iMoreRecv = ( OV.iMoreRecv + sDataSize ) - iReadTotalSize ;
//佬篮 单捞鸥 荐甫 历厘茄促.
//OV.iMoreRecv = iReadTotalSize - m_iReadSize;
iRet = DEF_WORKREAD_ONREAD_OK;
break;
}
}
else
{
//皋葛府甫 墨乔 秦初绰促.
memcpy(OV.pRecvContext->OnRecvBuf + PACKETHEADERSIZE - OV.iMoreRecv,OV.pRecvContext->RecvBuf + m_iReadSize,iReadTotalSize - m_iReadSize);
// 给佬篮 单捞鸥 庆歹 菩哦箭磊甫 历厘茄促.
OV.iMoreRecv = OV.iMoreRecv - iReadTotalSize;
//佬篮 单捞鸥 荐甫 历厘茄促.
//OV.iMoreRecv = iReadTotalSize - m_iReadSize;
iRet = DEF_WORKREAD_ONREAD_OK;
break;
}
}
else
{
//OV.eRecvState 俊矾.
}
}
m_iReadSize = 0;
if(PostRecv(OV) != TRUE)
return DEF_WORKREADERR_RECV_ERR;
return iRet;
}
BOOL CMWorkerThread::DoCommand()
{
return TRUE;
}
//-------------------------------------------------------------------------------------------------------
// Name :: PostRecv( CMOVERLAPPED &OV )
// Create Date :: 2003/12/29
// Description :: 坷滚乏 备炼眉狼 滚欺俊 府矫宏 滚欺甫 楷搬 矫难霖促.
// param ::
// CMOVERLAPPED &OV : 坷滚乏 备炼眉.
// Return Value :: void 鸥涝
// Bug Report ::
//-------------------------------------------------------------------------------------------------------
BOOL CMWorkerThread::PostRecv( CMOVERLAPPED &OV )
{
BOOL result;
OV.eState = eREAD; // 坷滚乏 函荐 惑怕 函拳.
OV.recvBufferDescriptor.len = PACKETBUFFERSIZE;
OV.recvBufferDescriptor.buf = OV.pRecvContext->RecvBuf;
OV.recvFlags = 0;
result = WSARecv( OV.s, &OV.recvBufferDescriptor, /* number of WSABUFs */ 1,
&OV.recvBufferDescriptor.len, &OV.recvFlags, &OV, /* completion routine address */ 0 );
result = ( result != SOCKET_ERROR ); // inverted logic
if ( result )
{
// OK
return TRUE;
}
else
{
int err = GetLastError();
if ( err != ERROR_IO_PENDING )
{
CMSingleton<CMDebug>::getInstance()->output("%s(%d)PostRead() Error(%d)",__FILE__,__LINE__,err);
// WSAENOTCONN 10057俊矾 瘤沥等 家南捞 立加登瘤 臼篮 家南捞促.
//DoClose( OV, true );
return FALSE;
}
}
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -