コード例 #1
0
            public static GlobalIDOwnerCollection DeserializeOdpReportSnapshot(ProcessingContext pc, IChunkFactory originalSnapshotChunks, ProcessingErrorContext errorContext, bool fetchSubreports, bool deserializeGroupTree, IConfiguration configuration, ref OnDemandMetadata odpMetadata, out Report report)
            {
                GlobalIDOwnerCollection globalIDOwnerCollection = new GlobalIDOwnerCollection();

                report = AspNetCore.ReportingServices.ReportProcessing.ReportProcessing.DeserializeKatmaiReport(pc.ChunkFactory, true, globalIDOwnerCollection);
                IChunkFactory chunkFactory = originalSnapshotChunks ?? pc.ChunkFactory;

                if (odpMetadata == null)
                {
                    odpMetadata = OnDemandProcessingManager.DeserializeOnDemandMetadata(chunkFactory, globalIDOwnerCollection);
                }
                if (pc.Parameters != null)
                {
                    pc.Parameters.StoreLabels();
                }
                if (fetchSubreports)
                {
                    AspNetCore.ReportingServices.ReportProcessing.ReportProcessing.FetchSubReports(report, pc.ChunkFactory, errorContext, odpMetadata, pc.ReportContext, pc.OnDemandSubReportCallback, 0, true, false, globalIDOwnerCollection, pc.QueryParameters);
                    if (deserializeGroupTree)
                    {
                        OnDemandProcessingManager.DeserializeGroupTree(report, chunkFactory, globalIDOwnerCollection, configuration, ref odpMetadata);
                    }
                }
                odpMetadata.GlobalIDOwnerCollection = globalIDOwnerCollection;
                return(globalIDOwnerCollection);
            }
コード例 #2
0
 public static void EnsureGroupTreeStorageSetup(OnDemandMetadata odpMetadata, IChunkFactory chunkFactory, GlobalIDOwnerCollection globalIDOwnerCollection, bool openExisting, int rifCompatVersion, bool prohibitSerializableValues)
 {
     if (odpMetadata.GroupTreeScalabilityCache == null)
     {
         IStreamHandler streamHandler = OnDemandProcessingManager.BuildChunkStreamHandler("GroupTree", AspNetCore.ReportingServices.ReportProcessing.ReportProcessing.ReportChunkTypes.Main, chunkFactory, openExisting);
         IStorage       storage       = new RIFAppendOnlyStorage(streamHandler, (IScalabilityObjectCreator)(object)default(GroupTreeRIFObjectCreator), GroupTreeReferenceCreator.Instance, globalIDOwnerCollection, openExisting, rifCompatVersion, prohibitSerializableValues);
         odpMetadata.GroupTreeScalabilityCache = new GroupTreeScalabilityCache(odpMetadata.GroupTreePartitionManager, storage);
     }
 }
コード例 #3
0
 public static void EnsureLookupStorageSetup(OnDemandMetadata odpMetadata, IChunkFactory chunkFactory, bool openExisting, int rifCompatVersion, bool prohibitSerializableValues)
 {
     if (odpMetadata.LookupScalabilityCache == null)
     {
         new AppendOnlySpaceManager();
         IStreamHandler streamHandler = OnDemandProcessingManager.BuildChunkStreamHandler("LookupInfo", AspNetCore.ReportingServices.ReportProcessing.ReportProcessing.ReportChunkTypes.LookupInfo, chunkFactory, openExisting);
         IStorage       storage       = new RIFAppendOnlyStorage(streamHandler, (IScalabilityObjectCreator)(object)default(LookupRIFObjectCreator), LookupReferenceCreator.Instance, null, openExisting, rifCompatVersion, prohibitSerializableValues);
         odpMetadata.LookupScalabilityCache = new LookupScalabilityCache(odpMetadata.LookupPartitionManager, storage);
     }
 }
コード例 #4
0
 private static void PreparePartitionedTreeForAsyncSerialization(PartitionedTreeScalabilityCache scaleCache, OnDemandProcessingContext odpContext, string chunkName, AspNetCore.ReportingServices.ReportProcessing.ReportProcessing.ReportChunkTypes chunkType)
 {
     if (scaleCache != null)
     {
         RIFAppendOnlyStorage rIFAppendOnlyStorage = scaleCache.Storage as RIFAppendOnlyStorage;
         if (rIFAppendOnlyStorage != null)
         {
             IStreamHandler streamHandler = OnDemandProcessingManager.BuildChunkStreamHandler(chunkName, chunkType, odpContext.ChunkFactory, rIFAppendOnlyStorage.FromExistingStream);
             rIFAppendOnlyStorage.Reset(streamHandler);
         }
         scaleCache.PrepareForFlush();
     }
 }
コード例 #5
0
            public static void DeserializeGroupTree(Report report, IChunkFactory chunkFactory, GlobalIDOwnerCollection globalIDOwnerCollection, IConfiguration configuration, ref OnDemandMetadata odpMetadata)
            {
                bool prohibitSerializableValues = configuration != null && configuration.ProhibitSerializableValues;

                OnDemandProcessingManager.EnsureGroupTreeStorageSetup(odpMetadata, chunkFactory, globalIDOwnerCollection, true, ReportProcessingCompatibilityVersion.GetCompatibilityVersion(configuration), prohibitSerializableValues);
                IStorage           storage            = odpMetadata.GroupTreeScalabilityCache.Storage;
                GroupTreePartition groupTreePartition = (GroupTreePartition)storage.Retrieve(odpMetadata.GroupTreeRootOffset);

                Global.Tracer.Assert(groupTreePartition.TopLevelScopeInstances[0].GetObjectType() == ObjectType.ReportInstanceReference, "GroupTree root partition did not contain a ReportInstance");
                odpMetadata.ReportInstance        = (groupTreePartition.TopLevelScopeInstances[0] as IReference <ReportInstance>);
                odpMetadata.Report                = report;
                odpMetadata.ReportSnapshot.Report = report;
            }
コード例 #6
0
            public void SerializeSnapshot()
            {
                Global.Tracer.Assert(null != this.m_odpContext, "OnDemandProcessingContext is unavailable");
                OnDemandMetadata odpMetadata = this.m_odpContext.OdpMetadata;

                if (odpMetadata.SnapshotHasChanged)
                {
                    try
                    {
                        IReference <ReportInstance> reportInstance = odpMetadata.ReportInstance;
                        Global.Tracer.Assert(reportInstance != null, "Missing GroupTreeRoot");
                        if (odpMetadata.IsInitialProcessingRequest)
                        {
                            reportInstance.UnPinValue();
                        }
                        if (odpMetadata.GroupTreeHasChanged || odpMetadata.IsInitialProcessingRequest)
                        {
                            GroupTreeScalabilityCache groupTreeScalabilityCache = this.m_odpContext.OdpMetadata.GroupTreeScalabilityCache;
                            groupTreeScalabilityCache.Flush();
                            if (odpMetadata.IsInitialProcessingRequest)
                            {
                                GroupTreePartition groupTreePartition = new GroupTreePartition();
                                groupTreePartition.AddTopLevelScopeInstance((IReference <ScopeInstance>)reportInstance);
                                long groupTreeRootOffset = groupTreeScalabilityCache.Storage.Allocate(groupTreePartition);
                                groupTreeScalabilityCache.Storage.Flush();
                                odpMetadata.GroupTreeRootOffset = groupTreeRootOffset;
                            }
                        }
                        if (odpMetadata.LookupInfoHasChanged)
                        {
                            LookupScalabilityCache lookupScalabilityCache = this.m_odpContext.OdpMetadata.LookupScalabilityCache;
                            lookupScalabilityCache.Flush();
                        }
                        OnDemandProcessingManager.SerializeMetadata(this.m_odpContext.ChunkFactory, this.m_odpContext.OdpMetadata, this.m_odpContext.GetActiveCompatibilityVersion(), this.m_odpContext.ProhibitSerializableValues);
                        OnDemandProcessingManager.SerializeSortFilterEventInfo(this.m_odpContext);
                    }
                    finally
                    {
                        if (odpMetadata != null)
                        {
                            odpMetadata.DisposePersistedTreeScalability();
                        }
                    }
                }
            }
コード例 #7
0
 public static void PreparePartitionedTreesForAsyncSerialization(OnDemandProcessingContext odpContext)
 {
     OnDemandProcessingManager.PreparePartitionedTreeForAsyncSerialization(odpContext.OdpMetadata.GroupTreeScalabilityCache, odpContext, "GroupTree", AspNetCore.ReportingServices.ReportProcessing.ReportProcessing.ReportChunkTypes.Main);
     OnDemandProcessingManager.PreparePartitionedTreeForAsyncSerialization(odpContext.OdpMetadata.LookupScalabilityCache, odpContext, "LookupInfo", AspNetCore.ReportingServices.ReportProcessing.ReportProcessing.ReportChunkTypes.LookupInfo);
 }