Exemple #1
0
        private void Delete(CacheItem item)
        {
            if (item.Value != null)
            {
                string[] itemKeys = item.Keys;
                item.Dispose();
                _expirations.RemoveExpiration(item);

                // Remove the lookup by this key to this item.
                foreach (string itemKey in itemKeys)
                {
                    _cache.Remove(itemKey);
                }
            }
        }
Exemple #2
0
        public void Can_remove_expiration()
        {
            var expired = new ManualResetEvent(false);
            var changed = new ManualResetEvent(false);
            var i       = 42;
            var ttl     = TimeSpan.FromSeconds(1);

            ExpiringHashSet <int> .Entry entry = null;
            var set = new ExpiringHashSet <int>(TaskTimerFactory.Current);

            set.EntryExpired      += (s, e) => { entry = e.Entry; expired.Set(); };
            set.CollectionChanged += (s, e) => changed.Set();
            set.SetExpiration(i, ttl);
            Assert.IsTrue(changed.WaitOne(2000));
            changed.Set();
            set.RemoveExpiration(i);
            Assert.IsTrue(changed.WaitOne(2000));
            Assert.IsFalse(expired.WaitOne(2000));
        }
Exemple #3
0
        public void Can_access_hashset_during_expiration_event()
        {
            var expired = new ManualResetEvent(false);
            var changed = new ManualResetEvent(false);
            var i       = 42;
            var ttl     = TimeSpan.FromSeconds(1);

            ExpiringHashSet <int> .Entry entry = null;
            var set = new ExpiringHashSet <int>(TaskTimerFactory.Current);

            set.EntryExpired += (s, e) => {
                entry = e.Entry;
                set.RemoveExpiration(e.Entry.Value);
                expired.Set();
            };
            set.CollectionChanged += (s, e) => changed.Set();
            set.SetExpiration(i, ttl);
            Assert.IsTrue(changed.WaitOne(5000));
            Assert.IsTrue(expired.WaitOne(5000));
            Assert.AreEqual(i, entry.Value);
            Assert.AreEqual(ttl, entry.TTL);
            Assert.IsNull(set[i]);
        }
 public void Can_access_hashset_during_expiration_event()
 {
     var expired = new ManualResetEvent(false);
     var changed = new ManualResetEvent(false);
     var i = 42;
     var ttl = TimeSpan.FromSeconds(1);
     ExpiringHashSet<int>.Entry entry = null;
     var set = new ExpiringHashSet<int>(TaskTimerFactory.Current);
     set.EntryExpired += (s, e) => {
         entry = e.Entry;
         set.RemoveExpiration(e.Entry.Value);
         expired.Set();
     };
     set.CollectionChanged += (s, e) => changed.Set();
     set.SetExpiration(i, ttl);
     Assert.IsTrue(changed.WaitOne(5000));
     Assert.IsTrue(expired.WaitOne(5000));
     Assert.AreEqual(i, entry.Value);
     Assert.AreEqual(ttl, entry.TTL);
     Assert.IsNull(set[i]);
 }
 public void Can_remove_expiration()
 {
     var expired = new ManualResetEvent(false);
     var changed = new ManualResetEvent(false);
     var i = 42;
     var ttl = TimeSpan.FromSeconds(1);
     ExpiringHashSet<int>.Entry entry = null;
     var set = new ExpiringHashSet<int>(TaskTimerFactory.Current);
     set.EntryExpired += (s, e) => { entry = e.Entry; expired.Set(); };
     set.CollectionChanged += (s, e) => changed.Set();
     set.SetExpiration(i, ttl);
     Assert.IsTrue(changed.WaitOne(2000));
     changed.Set();
     set.RemoveExpiration(i);
     Assert.IsTrue(changed.WaitOne(2000));
     Assert.IsFalse(expired.WaitOne(2000));
 }