public override void Initialize()

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