コード例 #1
0
 internal override void TouchAfterUnlocked(CacheRecord record, bool recordIsNew)
 {
     if (recordIsNew)
     {
         this.NotifyObservers(record.GetFuture(), true);
     }
 }
コード例 #2
0
        private void Clean(bool purge)
        {
            int  num  = 0;
            long num2 = this.memoryUsed;
            List <CacheRecord> list = new List <CacheRecord>();

            Monitor.Enter(this);
            try
            {
                while ((purge && this.lruQueue.Count > 0) || (this.memoryUsed > SizeSensitiveCache.paramCacheMaxSize && ((SizeSensitiveCache.oneEntryAtATime && this.lruQueue.Count > 0) || (!SizeSensitiveCache.oneEntryAtATime && this.lruQueue.Count > 1))))
                {
                    CacheRecord value = this.lruQueue.First.Value;
                    num++;
                    list.Add(value);
                    this.Remove(value, CacheBase.RemoveExpectation.Present);
                    this.spillCount++;
                }
            }
            finally
            {
                Monitor.Exit(this);
            }
            foreach (CacheRecord current in list)
            {
                this.NotifyObservers(current.GetFuture(), false);
            }
            D.Sayf(10, "SizeSensitive Cleaner: removed {0} objects; from {1} to {2} MB", new object[]
            {
                num,
                num2 >> 20,
                this.memoryUsed >> 20
            });
        }
コード例 #3
0
ファイル: SizeSensitiveCache.cs プロジェクト: mikhp/greatmaps
		internal override void TouchAfterUnlocked(CacheRecord record, bool recordIsNew)
		{
			if (recordIsNew)
			{
				this.NotifyObservers(record.GetFuture(), true);
			}
		}
コード例 #4
0
ファイル: MemoryCache.cs プロジェクト: fr830/Greatmaps-1
 internal override void Touch(CacheRecord record, bool recordIsNew)
 {
     if (recordIsNew)
     {
         this.clockQueue.AddLast(record);
     }
     ((ClockCacheRecord)record).touched = true;
 }
コード例 #5
0
		internal override void Touch(CacheRecord record, bool recordIsNew)
		{
			if (recordIsNew)
			{
				this.clockQueue.AddLast(record);
			}
			((ClockCacheRecord)record).touched = true;
		}
コード例 #6
0
 internal override void Touch(CacheRecord record, bool recordIsNew)
 {
     if (!recordIsNew)
     {
         this.lruQueue.Remove(record);
     }
     this.UpdateSizeForRecord((SizedCacheRecord)record);
     this.lruQueue.AddLast(record);
 }
コード例 #7
0
ファイル: SizeSensitiveCache.cs プロジェクト: mikhp/greatmaps
		internal override void Touch(CacheRecord record, bool recordIsNew)
		{
			if (!recordIsNew)
			{
				this.lruQueue.Remove(record);
			}
			this.UpdateSizeForRecord((SizedCacheRecord)record);
			this.lruQueue.AddLast(record);
		}
コード例 #8
0
ファイル: CacheBase.cs プロジェクト: mikhp/greatmaps
		internal virtual void Remove(CacheRecord record, CacheBase.RemoveExpectation removeExpectation)
		{
			Monitor.Enter(this);
			try
			{
				bool flag = this.cache.Remove(record.GetFuture());
				D.Assert(removeExpectation == CacheBase.RemoveExpectation.Unknown || removeExpectation == CacheBase.RemoveExpectation.Present == flag, "Remove didn't meet expectations. That could suggest a mutating hash.");
				this.resourceCounter.crement(-1);
				record.DropReference();
			}
			finally
			{
				Monitor.Exit(this);
			}
		}
コード例 #9
0
ファイル: CacheBase.cs プロジェクト: fr830/Greatmaps-1
 internal virtual void Remove(CacheRecord record, CacheBase.RemoveExpectation removeExpectation)
 {
     Monitor.Enter(this);
     try
     {
         bool flag = this.cache.Remove(record.GetFuture());
         D.Assert(removeExpectation == CacheBase.RemoveExpectation.Unknown || removeExpectation == CacheBase.RemoveExpectation.Present == flag, "Remove didn't meet expectations. That could suggest a mutating hash.");
         this.resourceCounter.crement(-1);
         record.DropReference();
     }
     finally
     {
         Monitor.Exit(this);
     }
 }
コード例 #10
0
ファイル: CacheBase.cs プロジェクト: ymx0627/GMap.NET
 internal void Evict(IFuture future)
 {
     Monitor.Enter(this);
     try
     {
         bool flag = cache.ContainsKey(future);
         if (flag)
         {
             CacheRecord record = cache[future];
             Remove(record, RemoveExpectation.Unknown);
         }
     }
     finally
     {
         Monitor.Exit(this);
     }
 }
コード例 #11
0
		internal override void Remove(CacheRecord record, CacheBase.RemoveExpectation removeExpectation)
		{
			base.Remove(record, removeExpectation);
		}
コード例 #12
0
ファイル: CacheBase.cs プロジェクト: ymx0627/GMap.NET
 internal abstract void Touch(CacheRecord record, bool recordIsNew);
コード例 #13
0
ファイル: MemoryCache.cs プロジェクト: ymx0627/GMap.NET
 internal override void Remove(CacheRecord record, RemoveExpectation removeExpectation)
 {
     base.Remove(record, removeExpectation);
 }
コード例 #14
0
 internal override void Remove(CacheRecord record, CacheBase.RemoveExpectation removeExpectation)
 {
     this.memoryUsed -= ((SizedCacheRecord)record).memoryCharge;
     this.lruQueue.Remove(record);
     base.Remove(record, removeExpectation);
 }
コード例 #15
0
ファイル: CacheBase.cs プロジェクト: ymx0627/GMap.NET
 internal virtual void TouchAfterUnlocked(CacheRecord record, bool recordIsNew)
 {
 }
コード例 #16
0
ファイル: CacheBase.cs プロジェクト: mikhp/greatmaps
		internal abstract void Touch(CacheRecord record, bool recordIsNew);
コード例 #17
0
ファイル: SizeSensitiveCache.cs プロジェクト: mikhp/greatmaps
		internal override void Remove(CacheRecord record, CacheBase.RemoveExpectation removeExpectation)
		{
			this.memoryUsed -= ((SizedCacheRecord)record).memoryCharge;
			this.lruQueue.Remove(record);
			base.Remove(record, removeExpectation);
		}
コード例 #18
0
ファイル: CacheBase.cs プロジェクト: mikhp/greatmaps
		internal virtual void TouchAfterUnlocked(CacheRecord record, bool recordIsNew)
		{
		}