internal override void Pin(BaseReference reference)
        {
            StorageItem item = (StorageItem)reference.Item;

            if (item == null)
            {
                if (CacheTryGetValue(reference.Id, out item))
                {
                    reference.Item = item;
                    item.AddReference(reference);
                    if (item.InQueue == InQueueState.InQueue)
                    {
                        m_cachePriority.Bump(item);
                    }
                }
                else
                {
                    item = LoadItem(reference);
                }
            }
            else if (item.InQueue == InQueueState.InQueue)
            {
                m_cachePriority.Bump(item);
            }
            item.PinCount++;
        }
示例#2
0
 internal sealed override void ReferenceValueCallback(BaseReference reference)
 {
     if (reference.InQueue == InQueueState.Exempt)
     {
         m_cachePriority.Bump(reference.Item);
     }
     base.ReferenceValueCallback(reference);
 }