/// <summary> /// Initialises the object. /// </summary> private void Initialise() { if (!_Initialised) { lock (_QueueLock) { if (!_Initialised) { _Initialised = true; QueueRepository.AddQueue(this); _SharedConfiguration = Factory.Singleton.Resolve <ISharedConfiguration>().Singleton; _Clock = Factory.Singleton.Resolve <IClock>(); _IsRunningUnderTestEnvironment = Factory.Singleton.Resolve <IRuntimeEnvironment>().Singleton.IsTest; // Give plugins two ways to set the provider - either they can fetch the singleton for this // object and set the provider to their own implementation or they can register their provider // as the default implementation for IAircraftOnlineLookupProvider. if (Provider == null) { Provider = Factory.Singleton.Resolve <IAircraftOnlineLookupProvider>(); CheckProviderSanity(); } _SecondsToNextLookup = Provider.MinSecondsBetweenRequests; var heartbeatService = Factory.Singleton.Resolve <IHeartbeatService>().Singleton; heartbeatService.FastTick += Heartbeat_FastTick; } } } }