// Token: 0x060004A0 RID: 1184 RVA: 0x00021E6C File Offset: 0x0002006C
        private void ManageCache(Guid mbxGuid)
        {
            int num = Array.IndexOf <Guid>(this.mbxGuidFifo, mbxGuid);

            if (num >= 0 && num != this.mbxGuidFifoStart)
            {
                int num2 = (num == 0) ? (ElcEventBasedAssistant.mbxFifoCacheSize - 1) : (num - 1);
                this.mbxGuidFifo[num]  = this.mbxGuidFifo[num2];
                this.mbxGuidFifo[num2] = mbxGuid;
            }
            if (num < 0)
            {
                this.mbxGuidFifoStart = ((this.mbxGuidFifoStart == 0) ? (ElcEventBasedAssistant.mbxFifoCacheSize - 1) : (this.mbxGuidFifoStart - 1));
                Guid mbxGuid2 = this.mbxGuidFifo[this.mbxGuidFifoStart];
                if (!Guid.Empty.Equals(this.mbxGuidFifoStart))
                {
                    CachedState cachedState = AssistantsService.CachedObjectsList.GetCachedState(mbxGuid2);
                    if (cachedState != null)
                    {
                        cachedState.LockForWrite();
                        UserRetentionPolicyCache userRetentionPolicyCache = cachedState.State[5] as UserRetentionPolicyCache;
                        if (userRetentionPolicyCache != null && !userRetentionPolicyCache.ReadOnlyCache)
                        {
                            cachedState.State[5] = null;
                        }
                        cachedState.ReleaseWriterLock();
                    }
                }
                this.mbxGuidFifo[this.mbxGuidFifoStart] = mbxGuid;
            }
        }
Exemplo n.º 2
0
 // Token: 0x060004EA RID: 1258 RVA: 0x0002570C File Offset: 0x0002390C
 internal static void UpdateStateForPendingFaiEvent(long eventCounter, CachedState cachedState)
 {
     cachedState.LockForWrite();
     try
     {
         UserRetentionPolicyCache userRetentionPolicyCache = cachedState.State[5] as UserRetentionPolicyCache;
         if (userRetentionPolicyCache == null || userRetentionPolicyCache.ReadOnlyCache)
         {
             userRetentionPolicyCache = new UserRetentionPolicyCache();
         }
         userRetentionPolicyCache.HasPendingFaiEvent     = true;
         userRetentionPolicyCache.PendingFaiEventCounter = eventCounter;
         cachedState.State[5] = userRetentionPolicyCache;
     }
     finally
     {
         cachedState.ReleaseWriterLock();
     }
 }