Exemplo n.º 1
0
        private bool Set(CacheItem item)
        {
            if (item == null || item.Data == null)
            {
                return(false);
            }
            if (item.GroupName != null)
            {
                m_DistributedKeyStorage.Add(item.GroupName, item.Key);
            }
            bool rst = false;

            if (item is NeverCacheItem)
            {
                rst = m_CacheManager.Set(item.Key, (NeverCacheItem)item);
            }
            else if (item is AbsoluteCacheItem)
            {
                rst = m_CacheManager.Set(item.Key, (AbsoluteCacheItem)item, ((AbsoluteCacheItem)item).AbsoluteExpiration);
            }
            else if (item is SlidingCacheItem)
            {
                if (!m_ReActiveCacheTask.Exists(t => t.Key == item.Key))
                {
                    lock (m_SyncObj)
                    {
                        int index = m_ReActiveCacheTask.FindIndex(t => t.Key == item.Key);
                        if (index >= 0 && index < m_ReActiveCacheTask.Count)
                        {
                            m_ReActiveCacheTask.RemoveAt(index);
                        }
                    }
                }
                rst = m_CacheManager.Set(item.Key, (SlidingCacheItem)item, ((SlidingCacheItem)item).SlidingExpiration);
            }
            if (rst)
            {
                SetLocalCache(item);
            }
            return(rst);
        }