public FileDataSource(IFeatureStore featureStore, List <string> paths, bool autoUpdate, TimeSpan pollInterval, Func <string, object> alternateParser, bool skipMissingPaths, DuplicateKeysHandling duplicateKeysHandling, IFileReader fileReader) { _featureStore = featureStore; _paths = new List <string>(paths); _parser = new FlagFileParser(alternateParser); _dataMerger = new FlagFileDataMerger(duplicateKeysHandling); _fileReader = fileReader; _skipMissingPaths = skipMissingPaths; if (autoUpdate) { try { #if NETSTANDARD1_4 || NETSTANDARD1_6 _reloader = new FilePollingReloader(_paths, TriggerReload, pollInterval); #else _reloader = new FileWatchingReloader(_paths, TriggerReload); #endif } catch (Exception e) { Log.ErrorFormat("Unable to watch files for auto-updating: {0}", e); _reloader = null; } } else { _reloader = null; } }
public FlagFileDataMerger(DuplicateKeysHandling duplicateKeysHandling) { _duplicateKeysHandling = duplicateKeysHandling; }
/// <summary> /// Specifies how to handle keys that are duplicated across files. /// </summary> /// <remarks> /// <para> /// By default, the file data source will throw if keys are duplicated across files. /// </para> /// </remarks> /// <param name="duplicateKeysHandling">how duplicate keys should be handled</param> /// <returns>the same factory object</returns> public FileDataSourceFactory WithDuplicateKeysHandling(DuplicateKeysHandling duplicateKeysHandling) { _duplicateKeysHandling = duplicateKeysHandling; return(this); }