public FileDataSource(IDataSourceUpdates dataSourceUpdates, FileDataTypes.IFileReader fileReader, List <string> paths, bool autoUpdate, Func <string, object> alternateParser, bool skipMissingPaths, FileDataTypes.DuplicateKeysHandling duplicateKeysHandling, Logger logger) { _logger = logger; _dataSourceUpdates = dataSourceUpdates; _paths = new List <string>(paths); _parser = new FlagFileParser(alternateParser); _dataMerger = new FlagFileDataMerger(duplicateKeysHandling); _fileReader = fileReader; _skipMissingPaths = skipMissingPaths; if (autoUpdate) { try { _reloader = new FileWatchingReloader(_paths, TriggerReload); } catch (Exception e) { LogHelpers.LogException(_logger, "Unable to watch files for auto-updating", e); _reloader = null; } } else { _reloader = null; } }
internal StreamProcessor( LdClientContext context, IDataSourceUpdates dataSourceUpdates, Uri baseUri, TimeSpan initialReconnectDelay, EventSourceCreator eventSourceCreator ) { _log = context.Basic.Logger.SubLogger(LogNames.DataSourceSubLog); _log.Info("Connecting to LaunchDarkly stream"); _dataSourceUpdates = dataSourceUpdates; _httpConfig = context.Http; _initialReconnectDelay = initialReconnectDelay; _diagnosticStore = context.DiagnosticStore; _initTask = new TaskCompletionSource <bool>(); _streamUri = new Uri(baseUri, "/all"); _storeStatusMonitoringEnabled = _dataSourceUpdates.DataStoreStatusProvider.StatusMonitoringEnabled; if (_storeStatusMonitoringEnabled) { _dataSourceUpdates.DataStoreStatusProvider.StatusChanged += OnDataStoreStatusChanged; } _es = (eventSourceCreator ?? CreateEventSource)(_streamUri, _httpConfig); _es.MessageReceived += OnMessage; _es.Error += OnError; _es.Opened += OnOpen; }
public IDataSource CreateDataSource(LdClientContext context, IDataSourceUpdates updateSink) { if (Instance is MockDataSourceBase m) { m.UpdateSink = updateSink; } return(Instance); }
/// <inheritdoc/> public IDataSource CreateDataSource(LdClientContext context, IDataSourceUpdates dataSourceUpdates) { return(new StreamProcessor( context, dataSourceUpdates, _baseUri ?? DefaultBaseUri, _initialReconnectDelay, _eventSourceCreator )); }
/// <summary> /// Called internally by the SDK to associate this test data source with an /// <see cref="LdClient"/> instance. You do not need to call this method. /// </summary> /// <param name="context">created internally by <c>LdClient</c></param> /// <param name="dataSourceUpdates">created internally by <c>LdClient</c></param> /// <returns>a data source instance</returns> public IDataSource CreateDataSource(LdClientContext context, IDataSourceUpdates dataSourceUpdates) { var instance = new DataSourceImpl(this, dataSourceUpdates, context.Basic.Logger.SubLogger("DataSource.TestData")); lock (_lock) { _instances.Add(instance); } return(instance); }
/// <inheritdoc/> public IDataSource CreateDataSource(LdClientContext context, IDataSourceUpdates dataSourceUpdates) { context.Basic.Logger.Warn("You should only disable the streaming API if instructed to do so by LaunchDarkly support"); FeatureRequestor requestor = new FeatureRequestor(context, _baseUri ?? DefaultBaseUri); return(new PollingProcessor( context, requestor, dataSourceUpdates, _pollInterval )); }
public PollingProcessorTest(ITestOutputHelper testOutput) : base(testOutput) { _mockFeatureRequestor = new Mock <IFeatureRequestor>(); _featureRequestor = _mockFeatureRequestor.Object; _dataStore = new InMemoryDataStore(); var dataSourceUpdatesImpl = TestUtils.BasicDataSourceUpdates(_dataStore, testLogger); _dataSourceUpdates = dataSourceUpdatesImpl; _dataSourceStatusProvider = new DataSourceStatusProviderImpl(dataSourceUpdatesImpl); _config = Configuration.Default(sdkKey); _context = new LdClientContext(new BasicConfiguration(sdkKey, false, testLogger), _config); }
/// <inheritdoc/> public IDataSource CreateDataSource(LdClientContext context, IDataSourceUpdates dataSourceUpdates) { var configuredBaseUri = _baseUri ?? StandardEndpoints.SelectBaseUri(context.Basic.ServiceEndpoints, e => e.StreamingBaseUri, "Streaming", context.Basic.Logger); return(new StreamProcessor( context, dataSourceUpdates, configuredBaseUri, _initialReconnectDelay, _eventSourceCreator )); }
public IDataSource CreateDataSource(LdClientContext context, IDataSourceUpdates dataSourceUpdates) { if (context.Basic.Offline) { // If they have explicitly called Offline(true) to disable everything, we'll log this slightly // more specific message. context.Basic.Logger.Info("Starting LaunchDarkly client in offline mode"); } else { context.Basic.Logger.Info("LaunchDarkly client will not connect to LaunchDarkly for feature flag data"); } return(NullDataSource.Instance); }
internal PollingProcessor( LdClientContext context, IFeatureRequestor featureRequestor, IDataSourceUpdates dataSourceUpdates, TimeSpan pollInterval ) { _featureRequestor = featureRequestor; _dataSourceUpdates = dataSourceUpdates; _taskExecutor = context.TaskExecutor; _pollInterval = pollInterval; _initTask = new TaskCompletionSource <bool>(); _log = context.Basic.Logger.SubLogger(LogNames.DataSourceSubLog); }
/// <inheritdoc/> public IDataSource CreateDataSource(LdClientContext context, IDataSourceUpdates dataSourceUpdates) { var configuredBaseUri = _baseUri ?? StandardEndpoints.SelectBaseUri(context.Basic.ServiceEndpoints, e => e.PollingBaseUri, "Polling", context.Basic.Logger); context.Basic.Logger.Warn("You should only disable the streaming API if instructed to do so by LaunchDarkly support"); FeatureRequestor requestor = new FeatureRequestor(context, configuredBaseUri); return(new PollingProcessor( context, requestor, dataSourceUpdates, _pollInterval )); }
internal DataSourceImpl(TestData parent, IDataSourceUpdates updates, Logger log) { _parent = parent; _updates = updates; _log = log; }
/// <inheritdoc/> public IDataSource CreateDataSource(LdClientContext context, IDataSourceUpdates dataSourceUpdates) { return(new FileDataSource(dataSourceUpdates, _fileReader, _paths, _autoUpdate, _parser, _skipMissingPaths, _duplicateKeysHandling, context.Basic.Logger.SubLogger(LogNames.DataSourceSubLog))); }
public DataSourceWithData(IDataSourceUpdates dataSourceUpdates, FullDataSet <ItemDescriptor> data) { _dataSourceUpdates = dataSourceUpdates; _data = data; }
public IDataSource CreateDataSource(LdClientContext context, IDataSourceUpdates dataSourceUpdates) => new DataSourceWithData(dataSourceUpdates, _data);
IDataSource IDataSourceFactory.CreateDataSource(LdClientContext context, IDataSourceUpdates dataSourceUpdates) => _ds;
public IDataSource CreateDataSource(LdClientContext context, IDataSourceUpdates dataSourceUpdates) { _updates = dataSourceUpdates; return(new TestDataSource(_data, dataSourceUpdates)); }
internal TestDataSource(FullDataSet <ItemDescriptor> data, IDataSourceUpdates updates) { _data = data; _updates = updates; }