Beispiel #1
0
        internal static IMobileUpdateProcessor CreateUpdateProcessor(Configuration configuration,
                                                                     User user,
                                                                     IFlagCacheManager flagCacheManager,
                                                                     StreamManager.EventSourceCreator source = null)
        {
            if (configuration.MobileUpdateProcessor != null)
            {
                return(configuration.MobileUpdateProcessor);
            }

            if (configuration.Offline)
            {
                Log.InfoFormat("Starting LaunchDarkly client in offline mode");
                return(new NullUpdateProcessor());
            }

            if (configuration.IsStreamingEnabled)
            {
                return(new MobileStreamingProcessor(configuration,
                                                    flagCacheManager,
                                                    user, source));
            }
            else
            {
                var featureFlagRequestor = new FeatureFlagRequestor(configuration, user);
                return(new MobilePollingProcessor(featureFlagRequestor,
                                                  flagCacheManager,
                                                  user,
                                                  configuration.PollingInterval));
            }
        }
        internal static IMobileUpdateProcessor CreateUpdateProcessor(Configuration configuration,
                                                                     User user,
                                                                     IFlagCacheManager flagCacheManager,
                                                                     StreamManager.EventSourceCreator source = null)
        {
            if (configuration.MobileUpdateProcessor != null)
            {
                return(configuration.MobileUpdateProcessor);
            }

            IMobileUpdateProcessor updateProcessor = null;

            if (configuration.Offline)
            {
                Log.InfoFormat("Was configured to be offline, starting service with NullUpdateProcessor");
                return(new NullUpdateProcessor());
            }

            if (configuration.IsStreamingEnabled)
            {
                updateProcessor = new MobileStreamingProcessor(configuration,
                                                               flagCacheManager,
                                                               user, source);
            }
            else
            {
                var featureFlagRequestor = new FeatureFlagRequestor(configuration, user);
                updateProcessor = new MobilePollingProcessor(featureFlagRequestor,
                                                             flagCacheManager,
                                                             user,
                                                             configuration.PollingInterval);
            }

            return(updateProcessor);
        }
        internal static Func <IMobileUpdateProcessor> CreateUpdateProcessorFactory(Configuration configuration, User user,
                                                                                   IFlagCacheManager flagCacheManager, bool inBackground)
        {
            return(() =>
            {
                if (configuration._updateProcessorFactory != null)
                {
                    return configuration._updateProcessorFactory(configuration, flagCacheManager, user);
                }

                if (configuration.IsStreamingEnabled && !inBackground)
                {
                    return new MobileStreamingProcessor(configuration, flagCacheManager, user, null);
                }
                else
                {
                    var featureFlagRequestor = new FeatureFlagRequestor(configuration, user);
                    return new MobilePollingProcessor(featureFlagRequestor,
                                                      flagCacheManager,
                                                      user,
                                                      inBackground ? configuration.BackgroundPollingInterval : configuration.PollingInterval,
                                                      inBackground ? configuration.BackgroundPollingInterval : TimeSpan.Zero);
                }
            });
        }