internal void UnlinkReferences(bool updateId)
 {
     if (Reference != null)
     {
         if (updateId)
         {
             Reference.Id = Id;
         }
         Reference.Item = null;
     }
     if (m_otherReferences != null)
     {
         while (m_otherReferences.Count > 0)
         {
             BaseReference baseReference = m_otherReferences.Dequeue();
             baseReference.Item = null;
             if (updateId)
             {
                 baseReference.Id = Id;
             }
         }
     }
     Reference         = null;
     m_otherReferences = null;
 }
Beispiel #2
0
 public PartitionedTreeScalabilityCache(TreePartitionManager partitionManager, IStorage storage, long cacheExpansionIntervalMs, double cacheExpansionRatio, long minReservedMemoryBytes)
     : base(storage, cacheExpansionIntervalMs, cacheExpansionRatio, ComponentType.Processing, minReservedMemoryBytes)
 {
     m_serializationQueue = new LinkedBucketedQueue <BaseReference>(100);
     m_cachePriority      = new LinkedLRUCache <ItemHolder>();
     m_cacheFreeableBytes = 0L;
     m_partitionManager   = partitionManager;
 }
Beispiel #3
0
 public sealed override void Dispose()
 {
     m_cacheLookup        = null;
     m_cachePriority      = null;
     m_serializationQueue = null;
     m_pinnedItems        = null;
     base.Dispose();
 }
 public void AddReference(BaseReference newReference)
 {
     if (Reference == null)
     {
         Reference = newReference;
         return;
     }
     if (m_otherReferences == null)
     {
         m_otherReferences = new LinkedBucketedQueue <BaseReference>(5);
     }
     m_otherReferences.Enqueue(newReference);
 }
Beispiel #5
0
        private void EnqueueItem(BaseReference itemRef)
        {
            Microsoft.ReportingServices.ReportIntermediateFormat.Persistence.ObjectType objectType = itemRef.GetObjectType();
            if (objectType == Microsoft.ReportingServices.ReportIntermediateFormat.Persistence.ObjectType.SubReportInstanceReference)
            {
                if (m_pinnedItems == null)
                {
                    m_pinnedItems = new LinkedBucketedQueue <BaseReference>(25);
                }
                m_pinnedItems.Enqueue(itemRef);
                return;
            }
            ReferenceID id = itemRef.Id;

            if (!id.IsTemporary && (!id.HasMultiPart || m_partitionManager.GetTreePartitionOffset(id) != TreePartitionManager.EmptyTreePartitionOffset))
            {
                m_cachePriority.Add(itemRef.Item);
                itemRef.InQueue = InQueueState.Exempt;
            }
        }
 internal QueueEnumerator(LinkedBucketedQueue <T> queue)
 {
     m_queue = queue;
     Reset();
 }