Example #1
0
        private TogglFoundation(Builder builder)
        {
            builder.EnsureValidity();

            Version                     = builder.Version;
            DataSource                  = builder.DataSource;
            Database                    = builder.Database;
            UserAgent                   = builder.UserAgent;
            Scheduler                   = builder.Scheduler;
            ApiFactory                  = builder.ApiFactory;
            TimeService                 = builder.TimeService;
            GoogleService               = builder.GoogleService;
            RatingService               = builder.RatingService;
            ApiEnvironment              = builder.ApiEnvironment;
            LicenseProvider             = builder.LicenseProvider;
            ShortcutCreator             = builder.ShortcutCreator;
            AnalyticsService            = builder.AnalyticsService;
            StopwatchProvider           = builder.StopwatchProvider;
            PlatformInfo                = builder.PlatformInfo;
            BackgroundService           = builder.BackgroundService;
            BackgroundSyncService       = builder.BackgroundSyncService;
            SchedulerProvider           = builder.SchedulerProvider;
            NotificationService         = builder.NotificationService;
            RemoteConfigService         = builder.RemoteConfigService;
            IntentDonationService       = builder.IntentDonationService;
            PrivateSharedStorageService = builder.PrivateSharedStorageService;
            SuggestionProviderContainer = builder.SuggestionProviderContainer;
            AutomaticSyncingService     = builder.AutomaticSyncingService;
        }
Example #2
0
        public SyncManager(
            ISyncStateQueue queue,
            IStateMachineOrchestrator orchestrator,
            IAnalyticsService analyticsService,
            ILastTimeUsageStorage lastTimeUsageStorage,
            ITimeService timeService,
            IStopwatchProvider stopwatchProvider,
            IAutomaticSyncingService automaticSyncingService)
        {
            Ensure.Argument.IsNotNull(queue, nameof(queue));
            Ensure.Argument.IsNotNull(orchestrator, nameof(orchestrator));
            Ensure.Argument.IsNotNull(analyticsService, nameof(analyticsService));
            Ensure.Argument.IsNotNull(lastTimeUsageStorage, nameof(lastTimeUsageStorage));
            Ensure.Argument.IsNotNull(timeService, nameof(timeService));
            Ensure.Argument.IsNotNull(stopwatchProvider, nameof(stopwatchProvider));
            Ensure.Argument.IsNotNull(automaticSyncingService, nameof(automaticSyncingService));

            this.queue                   = queue;
            this.orchestrator            = orchestrator;
            this.analyticsService        = analyticsService;
            this.lastTimeUsageStorage    = lastTimeUsageStorage;
            this.timeService             = timeService;
            this.stopwatchProvider       = stopwatchProvider;
            this.automaticSyncingService = automaticSyncingService;

            progress           = new BehaviorSubject <SyncProgress>(SyncProgress.Unknown);
            ProgressObservable = progress.AsObservable();

            errors = new Subject <Exception>();
            Errors = errors.AsObservable();

            orchestrator.SyncCompleteObservable.Subscribe(syncOperationCompleted);
            isFrozen = false;
            automaticSyncingService.Start(this);
        }
        public static ISyncManager CreateSyncManager(
            ITogglDatabase database,
            ITogglApi api,
            ITogglDataSource dataSource,
            ITimeService timeService,
            IAnalyticsService analyticsService,
            ILastTimeUsageStorage lastTimeUsageStorage,
            IScheduler scheduler,
            IAutomaticSyncingService automaticSyncingService)
        {
            var queue       = new SyncStateQueue();
            var entryPoints = new StateMachineEntryPoints();
            var transitions = new TransitionHandlerProvider(analyticsService);

            ConfigureTransitions(transitions, database, api, dataSource, scheduler, timeService, analyticsService, lastTimeUsageStorage, entryPoints, queue);
            var stateMachine = new StateMachine(transitions, scheduler);
            var orchestrator = new StateMachineOrchestrator(stateMachine, entryPoints);

            return(new SyncManager(queue, orchestrator, analyticsService, lastTimeUsageStorage, timeService, automaticSyncingService));
        }
Example #4
0
 public Builder WithAutomaticSyncingService(IAutomaticSyncingService automaticSyncingService)
 {
     AutomaticSyncingService = automaticSyncingService;
     return(this);
 }