// Token: 0x06000918 RID: 2328 RVA: 0x00041798 File Offset: 0x0003F998 public static void FinishCacheSession(UserContext userContext) { if (userContext == null) { throw new ArgumentNullException("userContext"); } FolderMruCache cacheInstance = FolderMruCache.GetCacheInstance(userContext); cacheInstance.InternalFinishCacheSession(); cacheInstance.Commit(); }
// Token: 0x06000917 RID: 2327 RVA: 0x0004174C File Offset: 0x0003F94C public static void DeleteFromCache(StoreObjectId folderId, UserContext userContext) { if (folderId == null) { throw new ArgumentNullException("folderId"); } if (userContext == null) { throw new ArgumentNullException("userContext"); } FolderMruCache cacheInstance = FolderMruCache.GetCacheInstance(userContext); int entryIndexByFolderId = cacheInstance.GetEntryIndexByFolderId(folderId); if (entryIndexByFolderId == -1) { return; } cacheInstance.ShiftBackEntries(entryIndexByFolderId + 1); cacheInstance.Commit(); }
// Token: 0x06000916 RID: 2326 RVA: 0x00041700 File Offset: 0x0003F900 public static FolderMruCache GetCacheInstance(UserContext userContext) { if (userContext == null) { throw new ArgumentNullException("userContext"); } FolderMruCache folderMruCache = null; if (!userContext.IsMruSessionStarted) { userContext.IsMruSessionStarted = true; folderMruCache = new FolderMruCache(userContext); folderMruCache.StartCacheSession(); folderMruCache.Commit(); } if (folderMruCache == null) { return(new FolderMruCache(userContext)); } return(folderMruCache); }
// Token: 0x06000921 RID: 2337 RVA: 0x00041A38 File Offset: 0x0003FC38 private void InternalFinishCacheSession() { int num = -1; int i = 0; while (i < this.cacheLength) { FolderMruCacheEntry folderMruCacheEntry = this.cacheEntries[i]; if (!folderMruCacheEntry.UsedInCurrentSession) { folderMruCacheEntry.NumberOfSessionsSinceLastUse++; } else { folderMruCacheEntry.NumberOfSessionsSinceLastUse = 0; } int numberOfSessionsSinceLastUse = folderMruCacheEntry.NumberOfSessionsSinceLastUse; if (numberOfSessionsSinceLastUse <= 12) { if (numberOfSessionsSinceLastUse <= 6) { if (numberOfSessionsSinceLastUse != 3 && numberOfSessionsSinceLastUse != 6) { goto IL_E9; } } else if (numberOfSessionsSinceLastUse != 9) { if (numberOfSessionsSinceLastUse != 12) { goto IL_E9; } num = FolderMruCache.ComputeDecay(0.25, 2, folderMruCacheEntry.UsageCount); goto IL_FA; } num = 1; } else if (numberOfSessionsSinceLastUse <= 23) { if (numberOfSessionsSinceLastUse != 17) { if (numberOfSessionsSinceLastUse != 23) { goto IL_E9; } num = FolderMruCache.ComputeDecay(0.5, 4, folderMruCacheEntry.UsageCount); } else { num = FolderMruCache.ComputeDecay(0.25, 3, folderMruCacheEntry.UsageCount); } } else if (numberOfSessionsSinceLastUse != 26) { if (numberOfSessionsSinceLastUse != 31) { goto IL_E9; } num = 0; folderMruCacheEntry.UsageCount = 0; } else { num = FolderMruCache.ComputeDecay(0.75, 5, folderMruCacheEntry.UsageCount); } IL_FA: if (num > 0) { folderMruCacheEntry.DecayUsage(num); } i++; continue; IL_E9: if (folderMruCacheEntry.NumberOfSessionsSinceLastUse > 31) { folderMruCacheEntry.UsageCount = 0; goto IL_FA; } goto IL_FA; } }