Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        /// <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));
        }