示例#1
0
        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);
 }