bool Server_Manager_Common_LogSystem() { //初始化日志系统线程 CFileLogger* pFileLogger = new CFileLogger(); if (NULL == pFileLogger) { OUR_DEBUG((LM_INFO, "[CServerManager::Init]pFileLogger new is NULL.\n")); return false; } pFileLogger->Init(); AppLogManager::instance()->Init(1, MAX_MSG_THREADQUEUE, GetXmlConfigAttribute(xmlAlertConnect)->MailID); if (0 != AppLogManager::instance()->RegisterLog(pFileLogger)) { OUR_DEBUG((LM_INFO, "[CServerManager::Init]AppLogManager::instance()->RegisterLog error.\n")); return false; } else { OUR_DEBUG((LM_INFO, "[CServerManager::Init]AppLogManager is OK.\n")); } return true; }
// ----------------------------------------------------------------------------- CFileLogger* CFileLogger::NewL(const TDesC &logFileName, EWriteFileMode aMode) { CFileLogger* result = new (ELeave) CFileLogger(); CleanupStack::PushL(result); result->ConstructL(logFileName, aMode); CleanupStack::Pop(); return result; }
bool CProServerManager::Init() { int nServerPortCount = App_MainConfig::instance()->GetServerPortCount(); int nUDPServerPortCount = App_MainConfig::instance()->GetUDPServerPortCount(); int nReactorCount = App_MainConfig::instance()->GetReactorCount(); bool blState = false; //初始化禁止IP列表 App_ForbiddenIP::instance()->Init(FORBIDDENIP_FILE); //初始化连接器 if(!m_ConnectAcceptorManager.InitConnectAcceptor(nServerPortCount)) { OUR_DEBUG((LM_INFO, "[CProServerManager::Init]%s.\n", m_ConnectAcceptorManager.GetError())); return false; } //初始化反应器 for(int i = 0 ; i < nReactorCount; i++) { OUR_DEBUG((LM_INFO, "[CProServerManager::Init()]... i=[%d].\n",i)); if(i == 0) { //这里区分操作系统版本,使用不同的反应器 #ifdef WIN32 blState = App_ProactorManager::instance()->AddNewProactor(REACTOR_CLIENTDEFINE, Proactor_WIN32, 0); OUR_DEBUG((LM_INFO, "[CProServerManager::Init]AddNewProactor REACTOR_CLIENTDEFINE = Proactor_WIN32.\n")); #else blState = App_ProactorManager::instance()->AddNewProactor(REACTOR_CLIENTDEFINE, Proactor_POSIX, 0); OUR_DEBUG((LM_INFO, "[CProServerManager::Init]AddNewProactor REACTOR_CLIENTDEFINE = Proactor_POSIX.\n")); #endif if(!blState) { OUR_DEBUG((LM_INFO, "[CProServerManager::Init]AddNewProactor REACTOR_CLIENTDEFINE Error.\n")); return false; } } else { #ifdef WIN32 blState = App_ProactorManager::instance()->AddNewProactor(i, Proactor_WIN32, 1); OUR_DEBUG((LM_INFO, "[CProServerManager::Init]AddNewProactor REACTOR_CLIENTDEFINE = Proactor_WIN32.\n")); #else blState = App_ProactorManager::instance()->AddNewProactor(i, Proactor_POSIX, 1); OUR_DEBUG((LM_INFO, "[CProServerManager::Init]AddNewReactor REACTOR_CLIENTDEFINE = Proactor_POSIX.\n")); #endif if(!blState) { OUR_DEBUG((LM_INFO, "[CProServerManager::Init]AddNewProactor [%d] Error.\n", i)); return false; } } } //初始化日志系统线程 CFileLogger* pFileLogger = new CFileLogger(); if(NULL == pFileLogger) { OUR_DEBUG((LM_INFO, "[CProServerManager::Init]pFileLogger new is NULL.\n")); return false; } pFileLogger->Init(); AppLogManager::instance()->Init(); if(0 != AppLogManager::instance()->RegisterLog(pFileLogger)) { OUR_DEBUG((LM_INFO, "[CProServerManager::Init]AppLogManager::instance()->RegisterLog error.\n")); return false; } else { OUR_DEBUG((LM_INFO, "[CProServerManager::Init]AppLogManager is OK.\n")); } //初始化防攻击系统 App_IPAccount::instance()->Init(App_MainConfig::instance()->GetValid(), App_MainConfig::instance()->GetValidConnectCount()); //初始化BuffPacket缓冲池 App_BuffPacketManager::instance()->Init(BUFFPACKET_MAX_COUNT); //初始化PacketParse对象池 App_PacketParsePool::instance()->Init(MAX_PACKET_PARSE); //初始化MakePacket对象池 App_MakePacket::instance()->Init(); //初始化Message对象池 App_MessagePool::instance()->Init(MAX_MESSAGE_POOL); //初始化ProConnectHandler对象池 if(App_MainConfig::instance()->GetHandleCount() <= 0) { App_ProConnectHandlerPool::instance()->Init(MAX_HANDLE_POOL); } else { App_ProConnectHandlerPool::instance()->Init(App_MainConfig::instance()->GetHandleCount()); } //初始化统计模块功能 App_CommandAccount::instance()->Init(App_MainConfig::instance()->GetCommandAccount(), App_MainConfig::instance()->GetPacketTimeOut()); //初始化链接管理器 App_ProConnectManager::instance()->Init(App_MainConfig::instance()->GetSendQueueCount()); //初始化消息处理线程 App_MessageService::instance()->Init(App_MainConfig::instance()->GetThreadCount(), App_MainConfig::instance()->GetMsgMaxQueue(), App_MainConfig::instance()->GetMgsHighMark(), App_MainConfig::instance()->GetMsgLowMark()); //初始化给DLL的对象接口 App_ServerObject::instance()->SetMessageManager((IMessageManager* )App_MessageManager::instance()); App_ServerObject::instance()->SetLogManager((ILogManager* )AppLogManager::instance()); App_ServerObject::instance()->SetConnectManager((IConnectManager* )App_ProConnectManager::instance()); App_ServerObject::instance()->SetPacketManager((IPacketManager* )App_BuffPacketManager::instance()); App_ServerObject::instance()->SetClientManager((IClientManager* )App_ClientProConnectManager::instance()); App_ServerObject::instance()->SetUDPConnectManager((IUDPConnectManager* )App_ProUDPManager::instance()); App_ServerObject::instance()->SetTimerManager((ActiveTimer* )App_TimerManager::instance()); App_ServerObject::instance()->SetModuleMessageManager((IModuleMessageManager* )App_ModuleMessageManager::instance()); return true; }
bool CProServerManager::Init() { if(App_MainConfig::instance()->GetDebugTrunOn() == 1) { m_pFrameLoggingStrategy = new Frame_Logging_Strategy(); //是否打开ACE_DEBUG文件存储 Logging_Config_Param objParam; sprintf_safe(objParam.m_strLogFile, 256, "%s", App_MainConfig::instance()->GetDebugFileName()); objParam.m_iChkInterval = App_MainConfig::instance()->GetChkInterval(); objParam.m_iLogFileMaxCnt = App_MainConfig::instance()->GetLogFileMaxCnt(); objParam.m_iLogFileMaxSize = App_MainConfig::instance()->GetLogFileMaxSize(); sprintf_safe(objParam.m_strLogLevel, 128, "%s", App_MainConfig::instance()->GetDebugLevel()); m_pFrameLoggingStrategy->InitLogStrategy(objParam); } int nServerPortCount = App_MainConfig::instance()->GetServerPortCount(); int nUDPServerPortCount = App_MainConfig::instance()->GetUDPServerPortCount(); int nReactorCount = App_MainConfig::instance()->GetReactorCount(); bool blState = false; //初始化禁止IP列表 App_ForbiddenIP::instance()->Init(FORBIDDENIP_FILE); //初始化连接器 if(!m_ConnectAcceptorManager.InitConnectAcceptor(nServerPortCount)) { OUR_DEBUG((LM_INFO, "[CProServerManager::Init]%s.\n", m_ConnectAcceptorManager.GetError())); return false; } //初始化反应器 for(int i = 0 ; i < nReactorCount; i++) { OUR_DEBUG((LM_INFO, "[CProServerManager::Init()]... i=[%d].\n",i)); if(App_MainConfig::instance()->GetNetworkMode() == NETWORKMODE_PRO_IOCP) { blState = App_ProactorManager::instance()->AddNewProactor(i, Proactor_WIN32, 1); OUR_DEBUG((LM_INFO, "[CProServerManager::Init]AddNewProactor NETWORKMODE = Proactor_WIN32.\n")); } else { OUR_DEBUG((LM_INFO, "[CProServerManager::Init]AddNewProactor NETWORKMODE Error.\n")); return false; } if(!blState) { OUR_DEBUG((LM_INFO, "[CProServerManager::Init]AddNewProactor [%d] Error.\n", i)); return false; } } //初始化日志系统线程 CFileLogger* pFileLogger = new CFileLogger(); if(NULL == pFileLogger) { OUR_DEBUG((LM_INFO, "[CProServerManager::Init]pFileLogger new is NULL.\n")); return false; } pFileLogger->Init(); AppLogManager::instance()->Init(); if(0 != AppLogManager::instance()->RegisterLog(pFileLogger)) { OUR_DEBUG((LM_INFO, "[CProServerManager::Init]AppLogManager::instance()->RegisterLog error.\n")); return false; } else { OUR_DEBUG((LM_INFO, "[CProServerManager::Init]AppLogManager is OK.\n")); } //初始化防攻击系统 App_IPAccount::instance()->Init(App_MainConfig::instance()->GetIPAlert()->m_u4IPMaxCount, App_MainConfig::instance()->GetTrackIPCount()); App_ConnectAccount::instance()->Init(App_MainConfig::instance()->GetConnectAlert()->m_u4ConnectMin, App_MainConfig::instance()->GetConnectAlert()->m_u4ConnectMax, App_MainConfig::instance()->GetConnectAlert()->m_u4DisConnectMin, App_MainConfig::instance()->GetConnectAlert()->m_u4DisConnectMax); //初始化BuffPacket缓冲池.默认都是当前最大连接数的2倍 App_BuffPacketManager::instance()->Init(BUFFPACKET_MAX_COUNT, App_MainConfig::instance()->GetByteOrder()); //初始化PacketParse对象池 App_PacketParsePool::instance()->Init(MAX_PACKET_PARSE); //初始化MakePacket对象池 App_MakePacket::instance()->Init(); //初始化Message对象池 App_MessagePool::instance()->Init(MAX_MESSAGE_POOL); //初始化ProConnectHandler对象池 if(App_MainConfig::instance()->GetHandleCount() <= 0) { App_ProConnectHandlerPool::instance()->Init(MAX_HANDLE_POOL); } else { App_ProConnectHandlerPool::instance()->Init(App_MainConfig::instance()->GetHandleCount()); } //初始化统计模块功能 App_CommandAccount::instance()->Init(App_MainConfig::instance()->GetCommandAccount(), App_MainConfig::instance()->GetCommandFlow(), App_MainConfig::instance()->GetPacketTimeOut()); //初始化CommandID告警阀值相关 for(int i = 0; i < (int)App_MainConfig::instance()->GetCommandAlertCount(); i++) { _CommandAlert* pCommandAlert = App_MainConfig::instance()->GetCommandAlert(i); if(NULL != pCommandAlert) { App_CommandAccount::instance()->AddCommandAlert(pCommandAlert->m_u2CommandID, pCommandAlert->m_u4CommandCount, pCommandAlert->m_u4MailID); } } //初始化链接管理器 App_ProConnectManager::instance()->Init(App_MainConfig::instance()->GetSendQueueCount()); //初始化消息处理线程 App_MessageServiceGroup::instance()->Init(App_MainConfig::instance()->GetThreadCount(), App_MainConfig::instance()->GetMsgMaxQueue(), App_MainConfig::instance()->GetMgsHighMark(), App_MainConfig::instance()->GetMsgLowMark()); //初始化给DLL的对象接口 App_ServerObject::instance()->SetMessageManager((IMessageManager* )App_MessageManager::instance()); App_ServerObject::instance()->SetLogManager((ILogManager* )AppLogManager::instance()); App_ServerObject::instance()->SetConnectManager((IConnectManager* )App_ProConnectManager::instance()); App_ServerObject::instance()->SetPacketManager((IPacketManager* )App_BuffPacketManager::instance()); App_ServerObject::instance()->SetClientManager((IClientManager* )App_ClientProConnectManager::instance()); App_ServerObject::instance()->SetUDPConnectManager((IUDPConnectManager* )App_ProUDPManager::instance()); App_ServerObject::instance()->SetTimerManager((ActiveTimer* )App_TimerManager::instance()); App_ServerObject::instance()->SetModuleMessageManager((IModuleMessageManager* )App_ModuleMessageManager::instance()); return true; }