📄 dbproxyserver.cpp
字号:
return FALSE;
return TRUE;
}
VOID DBProxyServer::Shutdown()
{
ExecutUpdateSerialQuery();
}
BOOL DBProxyServer::ProcessConsole()
{
#ifndef _USING_SIMPLE_CONSOLE
return g_SUNConsole.Update();
#endif
if( kbhit() )
{
char ch = getch();
ch = toupper(ch);
switch(ch)
{
case 0x1b:
return FALSE;
case 'C':
//printf ( "accept / connect: %d / %d", m_pIO->GetNumberOfAcceptedUser(), m_pIO->GetNumberOfConnectedUser() );
break;
case ' ':
{
DisplayServerInfo();
}
break;
case 'Q':
{
/*
char szQueryBuff[32];
strcpy( szQueryBuff, "{?=call S_Test (1968, ? )}" );
TestQuery * pQuery = QUERYALLOC(TestQuery);
pQuery->SetIndex( 99 );
pQuery->SetVoidObject( this );
pQuery->SetQuery( szQueryBuff );
m_DB.DBQuery( pQuery );*/
}
break;
case 'Y':
{
}
break;
}
}
return TRUE;
}
/*
class CalcQueryCount
{
DWORD m_totalNum;
public:
CalcQueryCount():m_totalNum(0){}
~CalcQueryCount(){}
DWORD GetTotalCount() { return m_totalNum; }
VOID operator()( ServerSession * pSession )
{
if( pSession->IsDBInited() )
{
m_totalNum += pSession->GetBufferedQueryNum();
}
}
};
*/
VOID DBProxyServer::DisplayServerInfo()
{
// CalcQueryCount op;
// ServerSessionManager::Instance()->Foreach(op);
DISPMSG( "============== DBProxyServer ==============\n" );
DISPMSG( "Frame Per Second : %u \n", m_dwFPS );
DISPMSG( "Server Connections : %u \n", m_pIOCPServer->GetNumberOfConnections( IOHANDLER_SERVER_IDX ) );
DISPMSG( "DBUser Connections : %u \n", g_DBUserManager.GetNumberOfPlayers() );
DISPMSG( "Cached DBUser Connections : %u \n", g_DBUserManager.GetNumberOfCachedPlayers() );
// DISPMSG( "Number Of Buffered Querys : %u \n", op.GetTotalCount() );
}
VOID DBProxyServer::UpdateFPS()
{
// FPS Check
static int cnt = 0;
static DWORD prevTick = GetTickCount();
cnt++;
DWORD curTick = GetTickCount();
if( prevTick + 1000 < curTick )
{
m_dwFPS = cnt;
//printf( "%d FPS", cnt );
prevTick = curTick;
cnt = 0;
if( m_dwFPS < 10 )
{
SUNLOG(eFULL_LOG, "============================================================" );
SUNLOG(eFULL_LOG, "[DBProxyServer::UpdateFPS] FPS Warning!!! [%d] ", m_dwFPS );
SUNLOG(eFULL_LOG, "============================================================" );
}
}
}
DBSERIAL DBProxyServer::AllocDBSerial()
{
if( m_pDBSerialGenerator->NeedQuerySerial() )
ExecuteSelectSerialQuery();
return m_pDBSerialGenerator->GrantDBSerial();
}
//--------------------------------------------------------------------------------------------------------
// Global DB Query 窃荐甸
//--------------------------------------------------------------------------------------------------------
VOID DBProxyServer::ExecuteSelectSerialQuery()
{
char szQueryBuff[32];
_snprintf( szQueryBuff, 32, "S_CreateItemSeq %u", CreateItemSerialQuery::INTERVAL_OF_DBSERIAL_SIZE );
CreateItemSerialQuery * pQuery = QUERYALLOC(CreateItemSerialQuery);
pQuery->SetIndex( QUERY_SELECTDBSERIAL );
pQuery->SetVoidObject( this );
pQuery->SetQuery( szQueryBuff );
m_DB.DBQuery( pQuery );
}
VOID DBProxyServer::ExecutUpdateSerialQuery()
{
char szQueryBuff[32];
_snprintf( szQueryBuff, 32, "S_UpdateItemSeq %u", m_pDBSerialGenerator->GetCurDBSerial() );
UpdateItemSerialQuery * pQuery = QUERYALLOC(UpdateItemSerialQuery);
pQuery->SetIndex( QUERY_UPDATEDBSERIAL );
pQuery->SetVoidObject( this );
pQuery->SetQuery( szQueryBuff );
m_DB.DBQuery( pQuery );
}
VOID DBProxyServer::ExecutUpdateWarehouseQuery( DBUser * pUser )
{
if( pUser->IsNeedWarehouseToSave() )
{
UpdateWarehouseQuery * pQuery = QUERYALLOC(UpdateWarehouseQuery);
pUser->MakeUpdateWarehouseQuery(pQuery);
pQuery->SetIndex( QUERY_UPDATEWAREHOUSE );
pQuery->SetVoidObject( this );
m_DB.DBQuery( pQuery );
pUser->SetNeedWarehouseToSave(FALSE);
}
}
VOID DBProxyServer::ExecuteUpdateCharacterInfo( DBUser * pUser )
{
UpdateCharacterQuery * pQuery = QUERYALLOC(UpdateCharacterQuery);
pUser->MakeUpdateCharacterQuery( pQuery );
pQuery->SetIndex( QUERY_UPDATECHARACTER );
pQuery->SetVoidObject( this );
m_DB.DBQuery( pQuery );
}
VOID DBProxyServer::DBResult( DWORD dwIndex, Query * pData )
{
switch( dwIndex )
{
case 99:
{
TestQuery * pQData = (TestQuery *)pData;
QUERYFREE( TestQuery, pQData );
}
break;
case QUERY_SELECTDBSERIAL:
{
CreateItemSerialQuery * pQData = (CreateItemSerialQuery *)pData;
m_pDBSerialGenerator->SetDBSerial( pQData->GetCurDBSerial(), CreateItemSerialQuery::INTERVAL_OF_DBSERIAL_SIZE );
SUNLOG(eFULL_LOG, "[DBProxyServer::DBResult] [叼厚孽府]: 矫府倔 惯鞭(Cur:%u,Max:%u) OK", pQData->GetCurDBSerial(), pQData->GetCurDBSerial() + CreateItemSerialQuery::INTERVAL_OF_DBSERIAL_SIZE );
QUERYFREE( CreateItemSerialQuery, pQData );
}
break;
case QUERY_UPDATEDBSERIAL:
{
UpdateItemSerialQuery * pQData = (UpdateItemSerialQuery *)pData;
SUNLOG(eFULL_LOG, "[DBProxyServer::DBResult] [叼厚孽府]: 泅犁鳖瘤 荤侩茄 矫府倔(%u) 历厘", m_pDBSerialGenerator->GetCurDBSerial() );
_setShutdownState( READYTOSHUTDOWN );
QUERYFREE( UpdateItemSerialQuery, pQData );
}
break;
case QUERY_UPDATEWAREHOUSE:
{
UpdateWarehouseQuery * pQData = (UpdateWarehouseQuery *)pData;
if( UpdateWarehouseQuery::QUERY_RESULT_SUCCEEDED != pQData->pParam[0].m_Result )
{
SUNLOG(eFULL_LOG, "[DBProxyServer::DBResult] [U:%u][坷幅%d]:芒绊沥焊历厘俊矾", pQData->GetUserKey(), pQData->pParam[0].m_Result );
SUNLOG(eFULL_LOG, "[DBProxyServer::DBResult] %s", pQData->GetQuery() );
}
else
{
//SUNLOG(eFULL_LOG, "[U:%d][己傍]:芒绊沥焊历厘己傍", pQData->GetUserKey() );
}
QUERYFREE( UpdateWarehouseQuery, pQData );
}
break;
case QUERY_UPDATECHARACTER:
{
UpdateCharacterQuery * pQData = (UpdateCharacterQuery *)pData;
if( UpdateCharacterQuery::QUERY_RESULT_SUCCEEDED != pQData->pCharacterParam[0].m_Result )
{
SUNLOG(eFULL_LOG, "[DBProxyServer::DBResult] [U:%u][坷幅%d]:某腐磐沥焊历厘俊矾", pQData->GetUserKey(), pQData->pCharacterParam[0].m_Result );
SUNLOG(eFULL_LOG, "[DBProxyServer::DBResult] %s", pQData->GetQuery() );
}
else
{
//SUNLOG(eFULL_LOG, "[U:%d][己傍]:某腐磐沥焊历厘己傍", pQData->GetUserKey() );
}
QUERYFREE( UpdateCharacterQuery, pQData );
}
break;
}
}
///------------------------------------------------------------------------------------------------
/// 辑滚率 妮归
NetworkObject* CreateAcceptedObject()
{
ServerSession *pServerSession = ServerSessionFactory::Instance()->AllocServerSession( TEMP_SERVER );
return (NetworkObject*)pServerSession;
}
VOID DestroyAcceptedObject( NetworkObject *pNetworkObject )
{
ServerSession *pServerSession = (ServerSession*)pNetworkObject;
ServerSessionFactory::Instance()->FreeServerSession( (ServerSession *)pNetworkObject );
}
VOID DestroyConnectedObject( NetworkObject *pNetworkObject )
{
ServerSession *pServerSession = (ServerSession*)pNetworkObject;
ServerSessionFactory::Instance()->FreeServerSession( (ServerSession *)pNetworkObject );
}
//------------------------------------------------------------------------------------------------
// 叼厚率 妮归
void CallBackMessage1( char * szMessage )
{
SUNLOG(eFULL_LOG, "[CallBackMessage1] %s", szMessage );
}
void CallBackQueryResult1( DWORD dwIndex, QueryResult * pData )
{
((DBProxyServer *)pData->GetVoidObject())->DBResult( dwIndex, pData );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -