Major upgrade
This commit is contained in:
@@ -17,6 +17,7 @@ UNPUBLISHED WORK - COPYRIGHT RAYTHEON COMPANY.
|
||||
|
||||
using System;
|
||||
using System.Threading;
|
||||
using NLog;
|
||||
|
||||
namespace Raytheon.Common
|
||||
{
|
||||
@@ -32,6 +33,7 @@ namespace Raytheon.Common
|
||||
private AutoResetEvent _quitEvent;
|
||||
private bool _threadQuitControl;
|
||||
private MsgDevice.CompleteMessageCallback _completeMsgCallback;
|
||||
private readonly ILogger _logger;
|
||||
#endregion
|
||||
|
||||
#region PrivateFunctions
|
||||
@@ -41,23 +43,9 @@ namespace Raytheon.Common
|
||||
/// <param name="disposing"></param>
|
||||
protected virtual void Dispose(bool disposing)
|
||||
{
|
||||
try
|
||||
if (disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
_quitEvent.Dispose();
|
||||
}
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
try
|
||||
{
|
||||
ErrorLogger.Instance().Write(err.Message + "\r\n" + err.StackTrace);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//Do not rethrow. Exception from error logger that has already been garbage collected
|
||||
}
|
||||
_quitEvent.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,6 +61,7 @@ namespace Raytheon.Common
|
||||
/// <param name="dataInBufferEvent">A singal to let us know that data has arrived</param>
|
||||
public MsgProcessorWorker(IMsgParser msgParser, ref DataBuffer dataBuffer, ref AutoResetEvent dataInBufferEvent)
|
||||
{
|
||||
_logger = LogManager.GetCurrentClassLogger();
|
||||
_msgParser = msgParser;
|
||||
_dataBuffer = dataBuffer;
|
||||
_dataInBufferEvent = dataInBufferEvent;
|
||||
@@ -93,23 +82,9 @@ namespace Raytheon.Common
|
||||
/// </summary>
|
||||
public void Dispose()
|
||||
{
|
||||
try
|
||||
{
|
||||
Dispose(true);
|
||||
Dispose(true);
|
||||
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
try
|
||||
{
|
||||
ErrorLogger.Instance().Write(err.Message + "\r\n" + err.StackTrace);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//Do not rethrow. Exception from error logger that has already been garbage collected
|
||||
}
|
||||
}
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -121,7 +96,7 @@ namespace Raytheon.Common
|
||||
{
|
||||
if (_completeMsgCallback == null)
|
||||
{
|
||||
throw new Exception("MsgProcessorWorker::DoWork() - Callback not set");
|
||||
throw new Exception("Callback not set");
|
||||
}
|
||||
|
||||
WaitHandle[] waithandles = new WaitHandle[2];
|
||||
@@ -170,9 +145,9 @@ namespace Raytheon.Common
|
||||
|
||||
if (_msgParser.Run(payLoadPtr, numBytesLeftInTempBuffer, ref numBytesToRemove, ref msgId, ref errorCode) == true)
|
||||
{
|
||||
string msg = "MsgProcessorWorker::DoWork() - removing " + numBytesToRemove.ToString() + " bytes, for msg id: " + msgId.ToString("X8");
|
||||
string msg = "removing " + numBytesToRemove.ToString() + " bytes, for msg id: " + msgId.ToString("X8");
|
||||
|
||||
ErrorLogger.Instance().Write(msg, ErrorLogger.LogLevel.INFO);
|
||||
_logger.Debug(msg);
|
||||
|
||||
// we have a complete message, invoke the call back
|
||||
_completeMsgCallback(msgId, payLoadPtr, numBytesToRemove, errorCode);
|
||||
@@ -192,18 +167,18 @@ namespace Raytheon.Common
|
||||
// were we signaled to quit?
|
||||
if (_threadQuitControl == true)
|
||||
{
|
||||
ErrorLogger.Instance().Write("MsgProcessorWorker::DoWork() - in the midst of procesing data, the quit event was detected, exiting", ErrorLogger.LogLevel.INFO);
|
||||
_logger.Debug("in the midst of procesing data, the quit event was detected, exiting");
|
||||
isTheWorkDone = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Check start of data back in since we are done with it
|
||||
_dataBuffer.CheckInStartOfData();
|
||||
}
|
||||
else if (eventIndex == 1) // _quitEvent
|
||||
{
|
||||
ErrorLogger.Instance().Write("MsgProcessorWorker::DoWork() - quit event was detected, exiting", ErrorLogger.LogLevel.INFO);
|
||||
_logger.Debug("quit event was detected, exiting");
|
||||
isTheWorkDone = true;
|
||||
}
|
||||
else if (eventIndex == WaitHandle.WaitTimeout)
|
||||
@@ -212,16 +187,11 @@ namespace Raytheon.Common
|
||||
}
|
||||
else
|
||||
{
|
||||
ErrorLogger.Instance().Write("MsgProcessorWorker::DoWork() - Unhandled return from WaitHandle.WaitAny(): " + eventIndex.ToString());
|
||||
_logger.Debug(" Unhandled return from WaitHandle.WaitAny(): " + eventIndex.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
ErrorLogger.Instance().Write("MsgProcessorWorker::DoWork() - exiting", ErrorLogger.LogLevel.INFO);
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
ErrorLogger.Instance().Write(err.Message + "\r\n" + err.StackTrace);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user