/// <summary>
        /// 处理Cache项的改变
        /// </summary>
        /// <param name="data"></param>
        protected void DoCacheChanged(CacheNotifyData data)
        {
            DependencyBase dependency;

            if (data.NotifyType == CacheNotifyType.Clear)
            {
                //清除所有UDP缓存相关的缓存队列
                CacheQueueBase needToClearQueue = null;

                lock (this.CacheItems)
                {
                    foreach (KeyValuePair <CacheNotifyKey, DependencyBase> kp in this.CacheItems)
                    {
                        if (kp.Key.CacheQueueType == data.CacheQueueType)
                        {
                            needToClearQueue = kp.Value.CacheItem.Queue;
                        }
                    }
                }

                if (needToClearQueue != null)
                {
                    needToClearQueue.Clear();
                }
            }
            else
            {
                CacheNotifyKey key = new CacheNotifyKey();

                key.CacheKey       = data.CacheKey;
                key.CacheQueueType = data.CacheQueueType;

                lock (this.CacheItems)
                {
                    if (this.CacheItems.TryGetValue(key, out dependency))
                    {
                        switch (data.NotifyType)
                        {
                        case CacheNotifyType.Invalid:
                            dependency.SetChanged();
                            this.CacheItems.Remove(key);
                            break;

                        case CacheNotifyType.Update:
                            dependency.CacheItem.SetValue(data.CacheData);
                            break;
                        }
                    }
                }
            }
        }
示例#2
0
        /// <summary>
        /// 构造函数,初始化具有Dependency的CacheItem
        /// </summary>
        /// <param name="tKey">初始化CacheItem的键值</param>
        /// <param name="data">CacheItem的Value</param>
        /// <param name="dependencyBase">与此CacheItem相关的Dependency,用以判断过期</param>
        /// <param name="cacheQueue"> 本CacheItem所属的CacheQueue的引用</param>
        public CacheItem(TKey tKey, TValue data, DependencyBase dependencyBase, CacheQueueBase cacheQueue)
            : base(cacheQueue)
        {
            this.key    = tKey;
            this.tValue = data;

            if (dependencyBase != null)
            {
                dependencyBase.CacheItem = this;
                dependencyBase.CacheItemBinded();
            }

            this.Dependency = dependencyBase;
        }
示例#3
0
        /// <summary>
        /// 渲染每一条Cache项
        /// </summary>
        /// <param name="writer"></param>
        /// <param name="queueInfo"></param>
        private static void RenderCacheQueueItemsInfo(HtmlTextWriter writer, CacheQueueInfo queueInfo)
        {
            Type type = TypeCreator.GetTypeInfo(queueInfo.QueueTypeFullName);

            CacheQueueBase cacheQueue = CacheManager.GetInstance(type);

            CacheItemInfoCollection itemsInfo = cacheQueue.GetAllItemsInfo();

            foreach (CacheItemInfo itemInfo in itemsInfo)
            {
                writer.WriteBeginTag("div");

                writer.WriteAttribute("class", "queueInfoDetail");
                writer.Write(">");

                writer.Write(HttpUtility.HtmlEncode(string.Format("Key={0}, Value={1}", itemInfo.Key, itemInfo.Value)));

                writer.WriteEndTag("div");
            }
        }
示例#4
0
 /// <summary>
 /// 构造函数,初始化没有Dependency的CacheItem
 /// </summary>
 /// <param name="tKey">初始化CacheItem的Key值</param>
 /// <param name="data">初始化CacheItem的Value值</param>
 /// <param name="cacheQueue">本CacheItem所属的CacheQueue的引用</param>
 public CacheItem(TKey tKey, TValue data, CacheQueueBase cacheQueue)
     : base(cacheQueue)
 {
     this.key    = tKey;
     this.tValue = data;
 }
示例#5
0
 /// <summary>
 /// 构造方法
 /// </summary>
 /// <param name="cacheQueueBase"></param>
 public CacheItemBase(CacheQueueBase cacheQueueBase)
 {
     this.cacheQueue = cacheQueueBase;
 }