Files
mir_server/server/SessionServer/SSGateManager.cpp

155 lines
3.1 KiB
C++
Raw Permalink Normal View History

2025-01-09 17:45:40 +08:00

#include "StdAfx.h"
/*
CSSGateManager::CSSGateManager(CSSManager *lpSSManager)
:Inherited()
{
m_dwReconnectSQLTick = 0;
m_pSSManager = lpSSManager;
m_SQLConnection.SetMultiThread(TRUE);
}
CSSGateManager::~CSSGateManager()
{
}
BOOL CSSGateManager::ConnectSQL()
{
TICKCOUNT nCurrentTick = _getTickCount();
if ( !m_SQLConnection.Connected() )
{
if ( nCurrentTick >= m_dwReconnectSQLTick )
{
if (NULL ==m_pSSManager) return FALSE;
m_pSSManager->SetupSQLConnection(&m_SQLConnection);
if ( m_SQLConnection.Connect() )
{
mysql_options(m_SQLConnection.GetMySql(), MYSQL_SET_CHARSET_NAME, "utf8");
//if (m_SQLConnection.Exec("charset utf8"))
//{
// OutputMsg( rmError, _T("设置utf8字符编码出错"));
//}
//else
//{
// m_SQLConnection.ResetQuery();
//}
return TRUE;
}
OutputMsg( rmError, "连接数据库ip=%s,port=%d失败",
m_SQLConnection.GetServerHost(),m_SQLConnection.GetServerPort());
//如果连接SQL失败则将在5秒后重试
m_dwReconnectSQLTick = _getTickCount() + 5 * 1000;
return FALSE;
}
}
else
{
if( nCurrentTick> m_dwDumpTime)
{
if(m_dwDumpTime )
{
if(m_dwDumpTime)
{
CTimeProfMgr::getSingleton().dump();
}
}
m_dwDumpTime = nCurrentTick + 300000; //5分钟打印一次
}
}
return TRUE;
}
VOID CSSGateManager::ResultUserSessionConfim(const int nSessionId, const BOOL boOnline)
{
CSSGate *pGate;
for ( int i=0; i<ArrayCount(m_Gates); ++i )
{
pGate = &m_Gates[i];
if (pGate && pGate->m_UserList.count() > 0)
{
if ( pGate->ResultGateUserSessionConfim(nSessionId, boOnline) )
{
break;
}
}
}
}
//打开一个session
VOID CSSGateManager::OnResultConformOpenSession(int nSessionId, int nServerIndex)
{
CSSGate *pGate;
for ( int i=0; i<ArrayCount(m_Gates); ++i )
{
pGate = &m_Gates[i];
if (pGate && pGate->m_UserList.count() > 0)
{
if ( pGate->ResultOpenSession(nSessionId,nServerIndex) )
{
break;
}
}
}
}
VOID CSSGateManager::Initialize()
{
int i;
for ( i=0; i<ArrayCount(m_Gates); ++i )
{
m_Gates[i].m_pSQLConnection = &m_SQLConnection;
m_Gates[i].m_pSSManager = m_pSSManager;
//将网关添加到列表
m_GateList[i] = &m_Gates[i];
}
m_dwDumpTime =0;
}
VOID CSSGateManager::Uninitialize()
{
int i;
for ( i=0; i<ArrayCount(m_GateList); ++i )
{
//将网关从列表移除
m_GateList[i] = NULL;
}
}
VOID CSSGateManager::OnResultGateUserExists(int nSessionId, const BOOL boOnline)
{
}
VOID CSSGateManager::DispatchInternalMessage(UINT uMsg, UINT64 uParam1, UINT64 uParam2, UINT64 uParam3, UINT64 uParam4)
{
switch (uMsg)
{
case GTIM_CONFIM_SESSION_RESULT://会话服务器向网关用户投递确认会话是否在线的结果(Param1=会话IDParam2=是否在线(0:1))
ResultUserSessionConfim((int)uParam1, (int)uParam2);
break;
//确认已经打开了会
case GTIM_CONFIRM_OPEN_SESSION:
OnResultConformOpenSession((int)uParam1,(int)uParam2);
break;
default:
Inherited::DispatchInternalMessage(uMsg, uParam1, uParam2, uParam3,uParam4);
break;
}
}
VOID CSSGateManager::OnRun()
{
if ( Started() )
{
ConnectSQL();
}
}
*/