private IIncrementalSchedulingState LoadOrReuseInternal( FileEnvelopeId atomicSaveToken, PipGraph pipGraph, IConfiguration configuration, ContentHash preserveOutputSalt, string incrementalSchedulingStatePath, SchedulerState schedulerState) { Contract.Requires(pipGraph != null); Contract.Requires(!string.IsNullOrWhiteSpace(incrementalSchedulingStatePath)); Contract.Assert(m_analysisMode || configuration != null); if (!m_analysisMode && schedulerState != null && schedulerState.IncrementalSchedulingState != null) { IIncrementalSchedulingState reusedState = schedulerState.IncrementalSchedulingState.Reuse(m_loggingContext, pipGraph, configuration, preserveOutputSalt, m_tempDirectoryCleaner); if (reusedState != null) { return(reusedState); } } return(GraphAgnosticIncrementalSchedulingState.Load( m_loggingContext, atomicSaveToken, pipGraph, configuration, preserveOutputSalt, incrementalSchedulingStatePath, analysisModeOnly: m_analysisMode, tempDirectoryCleaner: m_tempDirectoryCleaner)); }
/// <summary> /// Creates a new instance of <see cref="IIncrementalSchedulingState"/>. /// </summary> public IIncrementalSchedulingState CreateNew( FileEnvelopeId atomicSaveToken, PipGraph pipGraph, IConfiguration configuration, ContentHash preserveOutputSalt) { Contract.Requires(atomicSaveToken.IsValid); Contract.Requires(pipGraph != null); Contract.Requires(configuration != null); return(GraphAgnosticIncrementalSchedulingState.CreateNew( m_loggingContext, atomicSaveToken, pipGraph, configuration, preserveOutputSalt, m_tempDirectoryCleaner)); }