in FixAntenna/NetCore/FixEngine/Session/IoThreads/MessageReader.cs [194:269]
protected override void Run()
{
if (Log.IsTraceEnabled)
{
Log.Trace("Start MRThread: " + _fixSession);
}
var configuration = _fixSession.Parameters.Configuration;
ApplyAffinity(configuration.GetPropertyAsInt(Config.RecvCpuAffinity), configuration.GetPropertyAsInt(Config.CpuAffinity));
Thread.BeginThreadAffinity();
var buf = new MsgBuf();
buf.FixMessage = _mainMessageForParse;
_mainMessageForParse.SetFixVersion(GetFixVersionForMessage());
while (!_shutdown)
{
try
{
ProcessBufferedMessages();
_transport.ReadMessage(buf);
_compositeListener.OnMessage(buf);
//TBD! do timing only if required
MessageProcessedTimestamp = DateTimeHelper.CurrentMilliseconds;
if (_statisticEnabled)
{
UpdateStatistic(buf);
}
}
catch (GarbledMessageException ex)
{
LogGarbledMessageException(ex, buf);
}
catch (SkipMessageException ex)
{
LogSkipMessageException(ex, buf);
}
catch (ArgumentException ex)
{
LogArgumentException(ex, buf);
}
catch (SequenceToLowException ex)
{
LogSequenceToLowException(ex, buf);
}
catch (SystemHandlerException ex)
{
LogSystemHandlerException(ex);
}
catch (Exception ex)
{
if (!GracefulShutdown)
{
ReportErrorAndShutdown(ex);
}
break;
}
finally
{
_mainMessageForParse.Clear();
}
}
CloseStorage();
if (Log.IsTraceEnabled)
{
Log.Trace("Stop MRThread: " + _fixSession);
}
Thread.EndThreadAffinity();
}