DragonNest/Server/DNLogServer/DNThreadManager.cpp

55 lines
1.3 KiB
C++
Raw Normal View History

2024-12-19 09:48:26 +08:00
#include "StdAfx.h"
#include "DNIocpManager.h"
#include "DNThreadManager.h"
#include "DNConnection.h"
#include "Log.h"
#include "DNProtocol.h"
#include "DNserviceConnection.h"
CDNThreadManager g_ThreadManager;
CDNThreadManager::CDNThreadManager(void): CThreadManager()
{
}
CDNThreadManager::~CDNThreadManager(void)
{
}
#if defined(PRE_DEL_ONNULL)
void CDNThreadManager::OnCalled(CSocketContext *pSocketContext, char *pBuffer, TThreadData* tThreadData)
#else
void CDNThreadManager::OnCalled(CSocketContext *pSocketContext, char *pBuffer, int nThreadID)
#endif
{
#if defined(PRE_DEL_ONNULL)
int nThreadID = tThreadData->nThreadID;
#endif
switch(pSocketContext->m_dwKeyParam)
{
case CONNECTIONKEY_DEFAULT:
{
#if defined( PRE_FIX_SOCKETCONTEXT_DANGLINGPTR )
CScopeInterlocked Scope( &pSocketContext->m_lActiveCount );
if( Scope.bIsDelete() )
break;
#endif // #if defined( PRE_FIX_SOCKETCONTEXT_DANGLINGPTR )
CDNConnection *pCon = (CDNConnection*)pSocketContext->GetParam();
if (!pCon) return;
pCon->FlushDBData( nThreadID );
}
break;
case CONNECTIONKEY_SERVICEMANAGER:
{
CDNServiceConnection *pCon = (CDNServiceConnection*)pSocketContext->GetParam();
if (!pCon) return;
pCon->FlushRecvData(0);
}
break;
}
g_pIocpManager->DetachSocket(pSocketContext, L"OnCalled");
}