public override void Execute()

in FixAntenna/AdminTool/Commands/Statistic/GeneralSessionsStat.cs [28:104]


		public override void Execute()
		{
			Log.Debug("Execute GeneralSessionsStat Command");
			try
			{
				var generalSessionsStatData = new GeneralSessionsStatData();

				var activeSessions = 0;
				var terminatedNormalSessions = 0;
				var reconnectingSessions = 0;
				var terminatedAbnormalSessions = 0;
				var awaitingSessions = 0;
				long numOfPrecessedMessages = 0;
				long minLifeTime = long.MaxValue, maxLifeTime = 0;
				var currTime = DateTimeHelper.CurrentMilliseconds;
				long lastSessionCreation = 0;
				var statisticEnabled = false;
				foreach (var session in GetFixSessions())
				{
					switch (session.SessionState.EnumValue)
					{
						case SessionState.InnerEnum.Connected:
							activeSessions++;
							break;
						case SessionState.InnerEnum.Disconnected:
							terminatedNormalSessions++;
							break;
						case SessionState.InnerEnum.Reconnecting:
							reconnectingSessions++;
							terminatedAbnormalSessions++;
							break;
						case SessionState.InnerEnum.WaitingForLogon:
							activeSessions++;
							break;
					}
					if (session.IsStatisticEnabled)
					{
						// statistic is enable for all sessions or disable for all sessions
						statisticEnabled = true;
						numOfPrecessedMessages += session.NoOfInMessages + session.NoOfOutMessages;
					}

					var diffTime = Math.Abs(currTime - session.IsEstablished);
					if (diffTime > maxLifeTime)
					{
						maxLifeTime = diffTime;
					}
					if (diffTime < minLifeTime)
					{
						minLifeTime = diffTime;
						lastSessionCreation = session.IsEstablished;
					}
				}
				generalSessionsStatData.ActiveSessions = activeSessions;
				generalSessionsStatData.AwaitingSessions = awaitingSessions;
				generalSessionsStatData.TerminatedAbnormalSessions = terminatedAbnormalSessions;
				generalSessionsStatData.ReconnectingSessions = reconnectingSessions;
				generalSessionsStatData.TerminatedNormalSessions = terminatedNormalSessions;
				if (statisticEnabled)
				{
					generalSessionsStatData.NumOfProcessedMessages = numOfPrecessedMessages;
					generalSessionsStatData.NumOfProcessedMessages = numOfPrecessedMessages;
				}
				generalSessionsStatData.MaxSessionLifetime = maxLifeTime;
				generalSessionsStatData.MinSessionLifetime = minLifeTime;
				generalSessionsStatData.LastSessionCreation = DateTimeHelper.FromMilliseconds(lastSessionCreation);

				var response = new Response();
				response.GeneralSessionsStatData = generalSessionsStatData;
				SendResponseSuccess(response);
			}
			catch (Exception e)
			{
				Log.Error(e);
				SendError(e.Message);
			}
		}