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);
}
}