private void CheckForPrematureScopeInstance(IRIFReportDataScope reportDataScope) { if (!OnDemandStateManagerStreaming.CanBindOrProcessIndividually(reportDataScope) && !reportDataScope.DataScopeInfo.NeedsIDC && !reportDataScope.IsDataIntersectionScope && !DataScopeInfo.HasDecomposableAncestorWithNonLatestInstanceBinding(reportDataScope)) { this.TryProcessToNextScopeInstance(reportDataScope); } }
public void CreatedScopeInstance(IRIFReportDataScope scope) { this.m_anyScopeInstanceCreated = true; if (OnDemandStateManagerStreaming.CanBindOrProcessIndividually(scope) && this.IsTargetScopeForDataProcessing(scope)) { this.m_stoppingScopeInstanceCreated = true; } }
private void EnsureScopeIsBound(IRIFReportDataScope reportDataScope) { this.BindScopeToInstance(reportDataScope); if (!reportDataScope.IsBoundToStreamingScopeInstance && OnDemandStateManagerStreaming.CanBindOrProcessIndividually(reportDataScope) && this.TryProcessToNextScopeInstance(reportDataScope)) { this.BindScopeToInstance(reportDataScope); } if (!reportDataScope.IsBoundToStreamingScopeInstance) { reportDataScope.BindToNoRowsScopeInstance(base.m_odpContext); } }
public override bool CheckForPrematureServerAggregate(string aggregateName) { IRIFReportDataScope iRIFReportDataScope = this.m_lastRIFObject; while (iRIFReportDataScope != null && !iRIFReportDataScope.IsScope) { iRIFReportDataScope = iRIFReportDataScope.ParentReportScope; } if (iRIFReportDataScope != null && iRIFReportDataScope.IsBoundToStreamingScopeInstance) { if (OnDemandStateManagerStreaming.NeedsDataForServerAggregate(iRIFReportDataScope)) { this.AdvanceDataPipeline(iRIFReportDataScope, PipelineAdvanceMode.ToFulfillServerAggregate); this.SetupEnvironment(iRIFReportDataScope, iRIFReportDataScope.CurrentStreamingScopeInstance.Value(), iRIFReportDataScope.CurrentStreamingScopeInstance); return(true); } return(false); } return(false); }
public override void BindNextMemberInstance(IInstancePath rifObject, IReportScopeInstance romInstance, int moveNextInstanceIndex) { IRIFReportDataScope iRIFReportDataScope = romInstance.ReportScope.RIFReportScope as IRIFReportDataScope; IReference <IOnDemandMemberInstance> reference = iRIFReportDataScope.CurrentStreamingScopeInstance as IReference <IOnDemandMemberInstance>; if (!reference.Value().IsNoRows) { IDisposable disposable = reference.PinValue(); IOnDemandMemberInstance onDemandMemberInstance = reference.Value(); iRIFReportDataScope.BindToStreamingScopeInstance(onDemandMemberInstance.GetNextMemberInstance()); if (!iRIFReportDataScope.IsBoundToStreamingScopeInstance && OnDemandStateManagerStreaming.CanBindOrProcessIndividually(iRIFReportDataScope) && onDemandMemberInstance.IsMostRecentlyCreatedScopeInstance) { IdcDataManager idcDataManager = null; if (iRIFReportDataScope.DataScopeInfo.NeedsIDC) { idcDataManager = (IdcDataManager)base.GetIdcDataManager(iRIFReportDataScope); List <object> groupExprValues = onDemandMemberInstance.GroupExprValues; AspNetCore.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode reportHierarchyNode = (AspNetCore.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode)iRIFReportDataScope; List <AspNetCore.ReportingServices.ReportIntermediateFormat.ExpressionInfo> groupExpressions = reportHierarchyNode.Grouping.GroupExpressions; idcDataManager.SetSkippingFilter(groupExpressions, groupExprValues); } if (this.TryProcessToNextScopeInstance(iRIFReportDataScope)) { iRIFReportDataScope.BindToStreamingScopeInstance(onDemandMemberInstance.GetNextMemberInstance()); } if (idcDataManager != null) { idcDataManager.ClearSkippingFilter(); } } if (!iRIFReportDataScope.IsBoundToStreamingScopeInstance) { iRIFReportDataScope.BindToNoRowsScopeInstance(base.m_odpContext); } this.SetupEnvironment(iRIFReportDataScope, iRIFReportDataScope.CurrentStreamingScopeInstance.Value(), iRIFReportDataScope.CurrentStreamingScopeInstance); disposable.Dispose(); } }
public bool ShouldStopPipelineAdvance(bool rowAccepted) { switch (this.m_pipelineMode) { case PipelineAdvanceMode.ByOneRow: this.m_metStoppingCondition = rowAccepted; break; case PipelineAdvanceMode.ToStoppingScopeInstance: this.m_metStoppingCondition = (rowAccepted && this.m_stoppingScopeInstanceCreated); break; case PipelineAdvanceMode.ToFulfillServerAggregate: this.m_metStoppingCondition = (this.m_stoppingScopeInstanceCreated || !OnDemandStateManagerStreaming.NeedsDataForServerAggregate(this.m_targetScopeForDataProcessing)); break; default: Global.Tracer.Assert(false, "Unknown pipeline mode: {0}", this.m_pipelineMode); throw new InvalidOperationException(); } return(this.m_metStoppingCondition); }