⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmworkthread.cpp

📁 Soul的源代码,类似于劲舞团之类的游戏
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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 + -