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

📄 dbproxyserver.cpp

📁 奇迹世界data 服务器代码,研究游戏的朋友有帮助
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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 + -