Exemple #1
0
        /// <summary>
        /// Registers callback when an entry with corresponding key expires
        /// </summary>
        /// <param name="key"></param>
        /// <param name="action"></param>
        public override void OnExpire(string key, Action <CacheEntry> action)
        {
            var hasEntry = EntryExpirationCallbacks.TryGetValue(key, out ConcurrentBag <Action <CacheEntry> > callbacks);

            if (!hasEntry)
            {
                callbacks = new ConcurrentBag <Action <CacheEntry> >();
                EntryExpirationCallbacks.TryAdd(key, callbacks);
            }

            callbacks.Add(action);
        }
Exemple #2
0
        /// <summary>
        /// Invokes callbacks on expiration
        /// </summary>
        /// <param name="key"></param>
        public override void InvokeExpireCallbacks(string key)
        {
            var entry = Configuration.DataProvider.Get(key);

            foreach (var globalCallback in GlobalExpirationCallbacks)
            {
                globalCallback(entry);
            }

            if (!EntryExpirationCallbacks.ContainsKey(key))
            {
                return;
            }

            foreach (var entryCallback in EntryExpirationCallbacks[key])
            {
                entryCallback(entry);
            }
        }