本文整理汇总了C++中TSession::GetID方法的典型用法代码示例。如果您正苦于以下问题:C++ TSession::GetID方法的具体用法?C++ TSession::GetID怎么用?C++ TSession::GetID使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TSession
的用法示例。
在下文中一共展示了TSession::GetID方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetSessionID
//--------------------------------------------------------------------------------------------
unsigned int TSessionManager::GetSessionID( unsigned int ip, unsigned short port )
{
unsigned int id = INVALID_HANDLE_SESSION;
if( mNavigateSession == nullptr )
return id;
TIP_Port ip_port( ip, port );
TSession* pSession = mNavigateSession->FindSessionByIP( ip_port );
if( pSession )
id = pSession->GetID();
return id;
}
示例2: DisconnectHandler
//--------------------------------------------------------------------------------------------
void TSessionManager::DisconnectHandler( TDisconnectTransportEvent* pEvent )
{
if( mNavigateSession == nullptr )
return;
TSession* pSession = mNavigateSession->FindSessionByIP( pEvent->ip_port );
if( pSession )
{
unsigned int id = pSession->GetID();
mCallBackDiconnect.Notify( id );
mNavigateSession->Delete( pSession );
}
}
示例3: 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();
}
示例4: ConnectAsync
//--------------------------------------------------------------------------------------------
void TSessionManager::ConnectAsync( TIP_Port& ip_port, std::string& login, std::string& password, unsigned char subNet, ConnectResultCallback onResult )
{
BL_ASSERT( flgNeedAnswerFromUp == false );
mConnectResult = onResult;
BeginWaitConnectUp();
lockConnectUp();
INetTransport* pTransport = mMngTransport->FindBySubNet( subNet );
if( pTransport == nullptr )
{
unlockConnectUp();
return mConnectResult( INVALID_HANDLE_SESSION );
}
if( mNavigateSession == nullptr )
{
unlockConnectUp();
return mConnectResult( INVALID_HANDLE_SESSION );
}
//===================================================================
// соединиться с сервером (верхнее соединение)
if( pTransport->Connect( ip_port.ip, ip_port.port ) == false )
{
unlockConnectUp();
return mConnectResult( INVALID_HANDLE_SESSION );// нет такого прослушивающего порта
}// connect to event
mIP_PortUp = ip_port; // запомнить параметры верхнего соединения
TSession* pSession = mNavigateSession->FindSessionByIP( mIP_PortUp );
if( pSession == nullptr )
pSession = NewSession( mIP_PortUp, pTransport, true/*connect to*/ );
else
{
unlockConnectUp();
GetLogger( STR_NAME_MMO_ENGINE )->
WriteF_time( "TSessionManager::Send(%s) sending to IP with exist session.\n", ip_port.ToString() );
BL_FIX_BUG();
return mConnectResult( INVALID_HANDLE_SESSION );
}
mSessionID_UP = pSession->GetID();
pSession->SetLogin( login );
pSession->SetPassword( password );
pSession->SetState( TSession::StateWaitKeyAES );
pSession->SendLogin();
unlockConnectUp();
// waiting recv...
}
示例5: GetSessionID
//--------------------------------------------------------------------------------------------
unsigned int TManagerSession::GetSessionID(unsigned int ip, unsigned short port)
{
unsigned int id = INVALID_HANDLE_SESSION;
lockAccessSession();
if(mNavigateSession==NULL)
{
unlockAccessSession();
return id;
}
//===================================================================
TSession* pSession = mNavigateSession->FindSessionByIP(TIP_Port(ip,port));
if(pSession)
id = pSession->GetID();
unlockAccessSession();
return id;
}
示例6: RecvHandler
//--------------------------------------------------------------------------------------------
void TSessionManager::RecvHandler( TRecvTransportEvent* pEvent )
{
if( mNavigateSession == nullptr )
return;
//===================================================================
// данные, пришедшие от сессии содержат заголовок, учесть при формировании
auto pHeader = (TSession::THeader*)pEvent->data.GetPtr();
// определить новая сессия или нет
TSession* pSession = mNavigateSession->FindSessionByIP( pEvent->ip_port );
if( pSession == nullptr )
return;
TDescRecvSession descRecvSession;
descRecvSession.c = pEvent->data;// данные пакета
descRecvSession.data = descRecvSession.c.GetPtr();
descRecvSession.dataSize = descRecvSession.c.GetSize();
descRecvSession.ip_port = pEvent->ip_port;
descRecvSession.type = pEvent->typeRecv;
descRecvSession.sessionID = pSession->GetID();
// данные, пришедшие от сессии содержат заголовок, учесть при формировании
switch( pHeader->type )
{
case TSession::eEcho:
break;
case TSession::eData:
RecvData( descRecvSession, pSession );
break;
case TSession::eLogin:
RecvLogin( descRecvSession, pSession );
break;
case TSession::eKeyAES:
RecvKeyAES( descRecvSession, pSession );
break;
case TSession::eIDconfirmation:
RecvIDconfirmation( descRecvSession, pSession );
break;
default:
{
BL_FIX_BUG();
FixHack( "Undefined type packet" );
}
}
}
示例7: Disconnect
//--------------------------------------------------------------------------------------------
void TManagerSession::Disconnect(TIP_Port* ip_port)
{
lockAccessSession();
if(mNavigateSession==NULL)
{
unlockAccessSession();
return;
}
//===================================================================
mMngCtxCrypto.Close(*ip_port);
TSession* pSession = mNavigateSession->FindSessionByIP(*ip_port);
if(pSession)
{
unsigned int id = pSession->GetID();
mCallBackDiconnect.Notify(id);
mNavigateSession->Delete(pSession);
}
unlockAccessSession();
}
示例8: Send
//--------------------------------------------------------------------------------------------
unsigned int TManagerSession::Send(unsigned int ip, unsigned short port, TBreakPacket bp, unsigned char subNet, bool check)
{
lockConnectUp();
INetTransport* pTransport = mMngTransport->FindBySubNet(subNet);
if(pTransport==NULL)
{
unlockConnectUp();
return INVALID_HANDLE_SESSION;
}
lockAccessSession();
if(mNavigateSession==NULL)
{
unlockAccessSession();
unlockConnectUp();
return INVALID_HANDLE_SESSION;
}
//===================================================================
// соединиться с сервером
if(pTransport->Connect(ip, port)==false)
{
unlockAccessSession();
unlockConnectUp();
//BL_FIX_BUG();
return INVALID_HANDLE_SESSION;// нет такого прослушивающего порта
}
mIP_PortUp.Set(ip,port); // запомнить параметры верхнего соединения
TSession* pSession = mNavigateSession->FindSessionByIP(mIP_PortUp);
if(pSession==NULL)
pSession = NewSession(mIP_PortUp, pTransport);
else
{
unlockAccessSession();
unlockConnectUp();
GetLogger(STR_NAME_MMO_ENGINE)->
WriteF_time("TManagerSession::Send(0x%X,%u) sending to IP with exist session.\n", ip, port);
BL_FIX_BUG();
return INVALID_HANDLE_SESSION;
}
unsigned int id_session = pSession->GetID();
// отсылка запроса на AES ключ
SendKeyRSA_Up(pSession);
unlockAccessSession();
//===================================================================
// ждем ответа
bool res = WaitAnswerFromUp();
CleanFlagsForWaitUp();
if(res==false)
{
unlockConnectUp();
GetLogger(STR_NAME_MMO_ENGINE)->
WriteF_time("Wait Answer From Up don't recv answer.\n");
return INVALID_HANDLE_SESSION;
}
//===================================================================
lockAccessSession();
if(mNavigateSession==NULL)
{
// произошел разрыв соединения
unlockAccessSession();
unlockConnectUp();
return INVALID_HANDLE_SESSION;
}
// возможно сессия была удалена, пока ждали ответа
pSession = mNavigateSession->FindSessionByID(id_session);
if(pSession)
Send(pSession, bp, check);
else
id_session = INVALID_HANDLE_SESSION;
unlockConnectUp();
unlockAccessSession();
return id_session;
}