Esempio n. 1
0
        void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorkerArgs args             = (BackgroundWorkerArgs)e.Argument;
            IMigrationService    migrationService = (IMigrationService)MigrationServiceManager.GetService(typeof(IMigrationService));

            switch (args.Task)
            {
            case BackgroundWorkerTask.Start:
                migrationService.StartSessionGroup(args.SessionGroupUniqueId);
                e.Result = args;
                break;

            case BackgroundWorkerTask.Resume:
                migrationService.ResumeSessionGroup(args.SessionGroupUniqueId);
                break;

            case BackgroundWorkerTask.Stop:
                migrationService.StopSessionGroup(args.SessionGroupUniqueId);
                break;

            case BackgroundWorkerTask.Pause:
                migrationService.PauseSessionGroup(args.SessionGroupUniqueId);
                break;
            }
        }
Esempio n. 2
0
        public ShellViewModel()
        {
            // TODO: set config directly
            m_migrationServiceManager = MigrationServiceManager.GetInstance();

            // Set up runtime view model hosting environment
            m_runtimeManager = RuntimeManager.GetInstance();
            IRefreshService refresh = (IRefreshService)m_runtimeManager.GetService(typeof(IRefreshService));

            refresh.AutoRefresh += this.AutoRefresh;

            // Avoid race by driving through top level refresh instead of relying upon background thread.
            Refresh();

            ConfigurationModel.Initialize();

            m_headlineViewModel = new HeadlineControlViewModel(Properties.Resources.ShellHeaderString, this);
            m_notificationBarVM = new NotificationBarViewModel(this);
            PushViewModel(new HomeViewModel(this));

            m_backgroundWorker.DoWork             += new DoWorkEventHandler(backgroundWorker_DoWork);
            m_backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(m_backgroundWorker_RunWorkerCompleted);

            this.Controller.Created += this.OnCreated;
            this.Controller.Opened  += this.OnOpened;
            this.Controller.Saved   += this.OnSaved;
        }
Esempio n. 3
0
        void m_refreshBW_DoWork(object sender, DoWorkEventArgs e)
        {
            IMigrationService migrationService      = (IMigrationService)MigrationServiceManager.GetService(typeof(IMigrationService));
            SessionGroupInitializationStatus status = SessionGroupInitializationStatus.Unknown;

            if (DataModel != null && DataModel.Configuration != null)
            {
                status = migrationService.GetSessionGroupInitializationStatus(DataModel.Configuration.SessionGroupUniqueId);
            }
            switch (status)
            {
            case SessionGroupInitializationStatus.Initialized:
                if (migrationService.GetRunningSessionGroups().Contains(DataModel.Configuration.SessionGroupUniqueId))
                {
                    ISyncStateManager stateManager     = SqlSyncStateManager.GetInstance();
                    PipelineState     newPipelineState = stateManager.GetCurrentState(OwnerType.SessionGroup, DataModel.Configuration.SessionGroupUniqueId);
                    if (s_canTransitionFrom[(int)m_currentPipelineState, (int)newPipelineState])
                    {
                        e.Result = newPipelineState;
                    }
                    else
                    {
                        Console.WriteLine("Cannot transition from " + m_currentPipelineState + " to " + newPipelineState);
                    }
                    IsCompleted = false;
                }
                else
                {
                    e.Result = PipelineState.Default;
                    using (Microsoft.TeamFoundation.Migration.EntityModel.RuntimeEntityModel context = Microsoft.TeamFoundation.Migration.EntityModel.RuntimeEntityModel.CreateInstance())
                    {
                        var query = from sg in context.RTSessionGroupSet
                                    where sg.GroupUniqueId.Equals(DataModel.Configuration.SessionGroupUniqueId)
                                    select sg.State;
                        int?state = query.FirstOrDefault();
                        if (state != null && (Microsoft.TeamFoundation.Migration.BusinessModel.BusinessModelManager.SessionStateEnum)state == BusinessModelManager.SessionStateEnum.Completed && ConflictManager != null && ConflictManager.TotalConflicts == 0)
                        {
                            IsCompleted = true;
                        }
                        else
                        {
                            IsCompleted = false;
                        }
                    }
                }
                break;

            case SessionGroupInitializationStatus.Initializing:
                IsCompleted = false;
                break;

            case SessionGroupInitializationStatus.NotInitialized:
            case SessionGroupInitializationStatus.Unknown:
                e.Result    = PipelineState.Default;
                IsCompleted = false;
                break;
            }
        }