本文整理汇总了C++中TSession::Recv方法的典型用法代码示例。如果您正苦于以下问题:C++ TSession::Recv方法的具体用法?C++ TSession::Recv怎么用?C++ TSession::Recv使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TSession
的用法示例。
在下文中一共展示了TSession::Recv方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Recv
//--------------------------------------------------------------------------------------------
void TManagerSession::Recv( INetTransport::TDescRecv* pDescRecv, INetTransport* pTransport)
{
lockAccessSession();
if(mNavigateSession==NULL)
{
unlockAccessSession();
return;
}
//===================================================================
// данные, пришедшие от сессии содержат заголовок, учесть при формировании
TSession::THeader* pHeader = (TSession::THeader*)pDescRecv->data;
// определить новая сессия или нет
TSession* pSession = mNavigateSession->FindSessionByIP(pDescRecv->ip_port);
if(pSession==NULL)
{
// новую сессию создавать, только если получен RSA ключ
if(pHeader->type!=TSession::eKeyRSA)
{
unlockAccessSession();
return;
}
pSession = NewSession(pDescRecv->ip_port, pTransport);
}
else
pSession->Recv();// уведомить сессию о приеме
unsigned int id = pSession->GetID();
//-----------------------------------------------
TDescRecvSession descRecvSession;
*((INetTransport::TDescRecv*)&descRecvSession) = *pDescRecv;
descRecvSession.id_session = id;
// данные, пришедшие от сессии содержат заголовок, учесть при формировании
descRecvSession.use_crypt = pHeader->use_crypt;
switch(pHeader->type)
{
case TSession::eEcho:
break;
case TSession::ePacket:
RecvPacket(descRecvSession, pSession);
break;
case TSession::eKeyRSA:
RecvKeyRSA(descRecvSession, pSession);
break;
case TSession::eKeyAES:
RecvKeyAES(descRecvSession);
break;
default:
FixHack("Undefined type packet");
}
unlockAccessSession();
}