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);
            }