in FixAntenna/NetCore/FixEngine/Storage/Queue/PersistentInMemoryQueue.cs [58:131]
public override void Initialize()
{
lock (this)
{
var initialized = IsInitialized();
var restored = false;
if (initialized)
{
Shutdown();
}
base.Initialize();
try
{
if (System.IO.File.Exists(_filename))
{
if (!initialized)
{
Restore(_filename);
restored = true;
}
}
else
{
new FileHelper(_filename).CreateNewFile();
}
}
catch (Exception e)
{
if (_log.IsDebugEnabled)
{
_log.Warn("IQueue restore failed. There is a possible loss of previously queued messages. " + e,
e);
}
else
{
_log.Warn("IQueue restore failed. There is a possible loss of previously queued messages. " +
e.Message);
}
try
{
new FileHelper(_filename).CopyToTemporaryFile().CreateNewFile();
}
catch (IOException e1)
{
throw new Exception(e1.Message, e1);
}
}
try
{
_queueOutputStream = new FileStream(_filename, FileMode.Open, FileAccess.Write, FileShare.ReadWrite);
if (initialized)
{
_queueOutputStream.Seek(0, SeekOrigin.End);
}
if (restored)
{
if (IsEmpty && _queueOutputStream.Length > 0)
{
_queueOutputStream.SetLength(0);
}
}
}
catch (IOException e)
{
throw new Exception(e.Message, e);
}
_log.Debug("PersistentInMemoryQueue started. IQueue size " + TotalSize);
}
}