public virtual bool StartServer(string strServerName) { ServerInfo refServerInfo = m_refServerInfoMgr.Find(strServerName); if (null == refServerInfo) { return(false); } if (0 == refServerInfo.WorldID || 0 == refServerInfo.ServerID) { m_refMonitoringLoggerMgr.Write(strServerName, refServerInfo.WorldID, refServerInfo.ServerID, LogID.FAILED_START_SERVER_ERROR); return(false); } if (PROCESS_STATE.RUNNING == refServerInfo.ProcessState || PROCESS_STATE.STARTING == refServerInfo.ProcessState) { m_refMonitoringLoggerMgr.Write(strServerName, refServerInfo.WorldID, refServerInfo.ServerID, LogID.FAILED_START_SERVER_ALREADY_START); return(false); } int nProcessID; if (m_refProcessSystem.StartProcess(refServerInfo.ExePath, out nProcessID) == false) { FileLog.Instance.Write("실패! ServerController.StartServer(), 서버 프로세스를 시작하지 못했습니다. (ServerName={0}, ExePath={1})", strServerName, refServerInfo.ExePath); m_refMonitoringLoggerMgr.Write(strServerName, refServerInfo.WorldID, refServerInfo.ServerID, LogID.FAILED_START_SERVER_PROCESS); return(false); } refServerInfo.SetProcessStarting(nProcessID); m_refMonitoringLoggerMgr.Write(strServerName, refServerInfo.WorldID, refServerInfo.ServerID, LogID.STARTING_SERVER); return(true); }
public bool Update(float fDelta) { if (false == m_rgltDelayToCheck.IsReady(fDelta)) { return(false); } bool bIsChangineState = false; LinkedListNode <ServerInfo> node = m_refServerInfoMgr.ServerInfoList.First; for (; node != null; node = node.Next) { ServerInfo refServerInfo = node.Value; if (refServerInfo.ProcessState != PROCESS_STATE.RUNNING) { continue; } SERVABLE_STATE eServableState = (refServerInfo.IsServable ? SERVABLE_STATE.ACTIVE : SERVABLE_STATE.INACTIVE); if (refServerInfo.ServableState == eServableState) { continue; } if (SERVABLE_STATE.INACTIVE == refServerInfo.ServableState && SERVABLE_STATE.ACTIVE == eServableState) { m_refMinitoringLoggerMgr.Write(refServerInfo.ServerName, refServerInfo.WorldID, refServerInfo.ServerID, LogID.SERVER_ACTIVE); } else if (SERVABLE_STATE.ACTIVE == refServerInfo.ServableState && SERVABLE_STATE.INACTIVE == eServableState) { m_refMinitoringLoggerMgr.Write(refServerInfo.ServerName, refServerInfo.WorldID, refServerInfo.ServerID, LogID.SERVER_INACTIVE); } refServerInfo.SetServableState(eServableState); bIsChangineState = true; } return(bIsChangineState); }
private bool CheckAndUpdate_SuccessStart(ServerInfo refServerInfo, bool bIsRunningProcess, bool bIsDBRun) { if (refServerInfo.ProcessState == PROCESS_STATE.STARTING && bIsRunningProcess == true && bIsDBRun == true) { refServerInfo.SetProcessRunning(); m_refMonitoringLoggerMgr.Write(refServerInfo.ServerName, refServerInfo.WorldID, refServerInfo.ServerID, LogID.SUCCESS_START_SERVER); return(true); } return(false); }