in FixAntenna/AdminTool/Commands/Monitoring/SessionsSnapshot.cs [31:114]
public override void Execute()
{
// StatusData - STATUS,
// ParamsData - STATUS_PARAMS,
// StatData - STATUS_PARAMS_STAT,
Log.Debug("Execute SessionsSnapshot Command");
try
{
var snapshot = (Fixicc.Message.SessionsSnapshot) Request;
var snapshotData = new SessionsSnapshotData();
if (!ValidateSessionsSnapshot(snapshot))
{
return;
}
// active sessions
var sessions = GetFixSessions();
foreach (var fixSession in sessions)
{
var session = new SessionsSnapshotDataSession();
var id = fixSession.Parameters.SessionId;
session.SenderCompID = id.Sender;
session.TargetCompID = id.Target;
session.SessionQualifier = id.Qualifier;
SetDataForSession(snapshot.View, session, fixSession);
// added extended parameter if need
if (IsNeedExtendedParameters(snapshot.SessionView, id))
{
var views = GetExtendedParameters(snapshot.SessionView, id);
using (var it = views.GetEnumerator())
{
while (it.MoveNext())
{
var view = it.Current;
SetDataForSession(view, session, fixSession);
}
}
}
snapshotData.Session.Add(session);
}
var activeSessionIDs = GetSessionsIDs(sessions);
// preconfigured sessions
var preconfigSessions = GetConfiguredSessionParameters();
foreach (var sParam in preconfigSessions)
{
var id = sParam.SessionId;
if (activeSessionIDs.Contains(id))
{
continue;
}
var session = new SessionsSnapshotDataSession();
session.SenderCompID = sParam.SenderCompId;
session.TargetCompID = sParam.TargetCompId;
session.SessionQualifier = sParam.SessionQualifier;
SetDataForConfiguredSession(snapshot.View, session, sParam);
// added extended parameter if need
if (IsNeedExtendedParameters(snapshot.SessionView, id))
{
var views = GetExtendedParameters(snapshot.SessionView, id);
using (var it = views.GetEnumerator())
{
while (it.MoveNext())
{
var view = it.Current;
SetDataForConfiguredSession(view, session, sParam);
}
}
}
snapshotData.Session.Add(session);
}
var response = new Response();
response.SessionsSnapshotData = snapshotData;
SendResponseSuccess(response);
}
catch (Exception e)
{
Log.Error(e.Message, e);
SendError(e.Message);
}
}