private DataPipelineManager GetOrCreatePipelineManager(Microsoft.ReportingServices.ReportIntermediateFormat.DataSet dataSet, IRIFReportDataScope targetScope) { if (m_pipelineManager != null) { if (m_pipelineManager.DataSetIndex == dataSet.IndexInCollection) { return(m_pipelineManager); } if (m_odpContext.IsTablixProcessingComplete(dataSet.IndexInCollection)) { Global.Tracer.Trace(TraceLevel.Verbose, "Performance: While rendering the report: '{0}' the data set {1} was processed multiple times due to rendering traversal order.", m_odpContext.ReportContext.ItemPathAsString.MarkAsPrivate(), dataSet.Name.MarkAsPrivate()); } CleanupPipelineManager(); ShutdownSequentialReadersAndIdcDataManagers(); } if (dataSet.AllowIncrementalProcessing) { m_pipelineManager = new IncrementalDataPipelineManager(m_odpContext, dataSet); } else { m_pipelineManager = new StreamingAtomicDataPipelineManager(m_odpContext, dataSet); } m_pipelineThrottle = new DataPipelineThrottle(); m_pipelineThrottle.StartUsingContext(PipelineAdvanceMode.ToStoppingScopeInstance, targetScope); m_pipelineManager.StartProcessing(); m_pipelineThrottle.StopUsingContext(); TryProcessToNextScopeInstance(targetScope); return(m_pipelineManager); }
private bool AdvanceDataPipeline(IRIFReportDataScope reportDataScope, PipelineAdvanceMode pipelineMode) { m_lastOnDemandScopeInstance = null; DataPipelineThrottle pipelineThrottle = SetupUsablePipelineContextWithBackup(); m_pipelineThrottle.StartUsingContext(pipelineMode, reportDataScope); bool isTablixProcessingMode = m_odpContext.IsTablixProcessingMode; bool num = m_odpContext.ExecutionLogContext.TryStartTablixProcessingTimer(); m_odpContext.IsTablixProcessingMode = true; if (reportDataScope.DataScopeInfo.DataPipelineID != m_pipelineManager.DataSetIndex) { m_odpContext.StateManager.GetIdcDataManager(reportDataScope).Advance(); } else { m_pipelineManager.Advance(); } m_odpContext.IsTablixProcessingMode = isTablixProcessingMode; if (num) { m_odpContext.ExecutionLogContext.StopTablixProcessingTimer(); } bool result = m_pipelineThrottle.StopUsingContext(); m_pipelineThrottle = pipelineThrottle; return(result); }
private DataPipelineThrottle SetupUsablePipelineContextWithBackup() { if (this.m_pipelineThrottle == null) { this.m_pipelineThrottle = new DataPipelineThrottle(); } DataPipelineThrottle pipelineThrottle = this.m_pipelineThrottle; if (this.m_pipelineThrottle.InUse) { if (this.m_pipelineThrottle2 == null) { this.m_pipelineThrottle2 = new DataPipelineThrottle(); } if (this.m_pipelineThrottle2.InUse) { this.m_pipelineThrottle = new DataPipelineThrottle(); } else { this.m_pipelineThrottle = this.m_pipelineThrottle2; } } return(pipelineThrottle); }
private DataPipelineThrottle SetupUsablePipelineContextWithBackup() { if (m_pipelineThrottle == null) { m_pipelineThrottle = new DataPipelineThrottle(); } DataPipelineThrottle pipelineThrottle = m_pipelineThrottle; if (m_pipelineThrottle.InUse) { if (m_pipelineThrottle2 == null) { m_pipelineThrottle2 = new DataPipelineThrottle(); } if (m_pipelineThrottle2.InUse) { m_pipelineThrottle = new DataPipelineThrottle(); return(pipelineThrottle); } m_pipelineThrottle = m_pipelineThrottle2; } return(pipelineThrottle); }