internal DataSourceUpdatesImpl( IDataStore store, IDataStoreStatusProvider dataStoreStatusProvider, TaskExecutor taskExecutor, Logger baseLogger, TimeSpan?outageLoggingTimeout ) { _store = store; _dataStoreStatusProvider = dataStoreStatusProvider; _taskExecutor = taskExecutor; _log = baseLogger.SubLogger(LogNames.DataSourceSubLog); _dependencyTracker = new DependencyTracker(); _outageTracker = outageLoggingTimeout.HasValue ? new DataSourceOutageTracker(_log, outageLoggingTimeout.Value) : null; var initialStatus = new DataSourceStatus { State = DataSourceState.Initializing, StateSince = DateTime.Now, LastError = null }; _status = new StateMonitor <DataSourceStatus, StateAndError>(initialStatus, MaybeUpdateStatus, _log); }