private IDataSource AddDataSource(DataSource settings) { lock (_syncRoot) { IDataSource dataSource; if (!string.IsNullOrEmpty(settings.LogFileFolderPath)) { dataSource = new FolderDataSource(_taskScheduler, _logFileFactory, _filesystem, settings); } else if (!string.IsNullOrEmpty(settings.File)) { dataSource = new SingleDataSource(_logFileFactory, _taskScheduler, settings, _maximumWaitTime); } else { if (settings.DisplayName == null) { settings.DisplayName = "Merged Data Source"; } dataSource = new MergedDataSource(_taskScheduler, settings, _maximumWaitTime); } _dataSources.Add(dataSource); _dataSourceIds.Add(dataSource.Id); _bookmarks.AddDataSource(dataSource); return(dataSource); } }
public FolderDataSource(ITaskScheduler taskScheduler, ILogFileFactory logFileFactory, IFilesystem filesystem, DataSource settings, TimeSpan maximumWaitTime) { _taskScheduler = taskScheduler; _logFileFactory = logFileFactory; _filesystem = filesystem; _settings = settings; _syncRoot = new object(); _dataSources = new Dictionary <IFileInfo, SingleDataSource>(); _mergedDataSource = new MergedDataSource(taskScheduler, settings, maximumWaitTime); _unfilteredLogFileProxy = new LogFileProxy(taskScheduler, maximumWaitTime); _filteredLogFileProxy = new LogFileProxy(taskScheduler, maximumWaitTime); DoChange(); }