internal LdClientContext( Configuration configuration, object eventSender, IDiagnosticStore diagnosticStore, IDiagnosticDisabler diagnosticDisabler ) { this.Basic = new BasicConfiguration(configuration.MobileKey); var logConfig = (configuration.LoggingConfigurationBuilder ?? Components.Logging()) .CreateLoggingConfiguration(); var logAdapter = logConfig.LogAdapter ?? Logs.None; this.BaseLogger = logAdapter.Logger(logConfig.BaseLoggerName ?? LogNames.Base); this.EnableBackgroundUpdating = configuration.EnableBackgroundUpdating; this.EvaluationReasons = configuration.EvaluationReasons; this.Http = (configuration.HttpConfigurationBuilder ?? Components.HttpConfiguration()) .CreateHttpConfiguration(this.Basic); this.ServiceEndpoints = configuration.ServiceEndpoints; this.DiagnosticStore = diagnosticStore; this.DiagnosticDisabler = diagnosticDisabler; this.TaskExecutor = new TaskExecutor( eventSender, PlatformSpecific.AsyncScheduler.ScheduleAction, this.BaseLogger ); }
public EventProcessor( EventsConfiguration config, IEventSender eventSender, IUserDeduplicator userDeduplicator, IDiagnosticStore diagnosticStore, IDiagnosticDisabler diagnosticDisabler, Logger logger, Action testActionOnDiagnosticSend ) { _logger = logger; _stopped = new AtomicBoolean(false); _offline = new AtomicBoolean(false); _sentInitialDiagnostics = new AtomicBoolean(false); _inputCapacityExceeded = new AtomicBoolean(false); _messageQueue = new BlockingCollection <EventProcessorInternal.IEventMessage>( config.EventCapacity > 0 ? config.EventCapacity : 1); _processorInternal = new EventProcessorInternal( config, _messageQueue, eventSender, userDeduplicator, diagnosticStore, _logger, testActionOnDiagnosticSend ); if (config.EventFlushInterval > TimeSpan.Zero) { _flushTimer = new Timer(DoBackgroundFlush, null, config.EventFlushInterval, config.EventFlushInterval); } _diagnosticStore = diagnosticStore; _diagnosticRecordingInterval = config.DiagnosticRecordingInterval; if (userDeduplicator != null && userDeduplicator.FlushInterval.HasValue) { _flushUsersTimer = new Timer(DoUserKeysFlush, null, userDeduplicator.FlushInterval.Value, userDeduplicator.FlushInterval.Value); } else { _flushUsersTimer = null; } if (diagnosticStore != null) { SetupDiagnosticInit(diagnosticDisabler == null || !diagnosticDisabler.Disabled); if (diagnosticDisabler != null) { diagnosticDisabler.DisabledChanged += ((sender, args) => SetupDiagnosticInit(!args.Disabled)); } } }
private EventProcessor MakeProcessor(EventsConfiguration config, Mock <IEventSender> mockSender, IDiagnosticStore diagnosticStore, IDiagnosticDisabler diagnosticDisabler, CountdownEvent diagnosticCountdown) { return(new EventProcessor(config, mockSender.Object, new TestUserDeduplicator(), diagnosticStore, diagnosticDisabler, NullLogger, () => { diagnosticCountdown.Signal(); })); }