Example #1
0
        public static T GetCacheObject <T>(string key, int seconds, CacheCallback call, bool refresh = false)
        {
            var cache = HttpRuntime.Cache;

            object cacheObject = cache.Get(key);

            if (cacheObject == null || refresh)
            {
                cacheObject = call();

                if (cacheObject == null)
                {
                    return(default(T));
                }

                cache.Insert(key, cacheObject, null, DateTime.Now.AddSeconds(seconds), TimeSpan.Zero);
            }

            if (cacheObject != null)
            {
                return((T)Convert.ChangeType(cacheObject, typeof(T)));
            }
            else
            {
                return(default(T));
            }
        }
Example #2
0
        /// <summary>
        /// 监听指定的节点
        /// </summary>
        /// <param name="node">节点名称</param>
        /// <param name="callback">节点数据更改或者节点被删除时会触发该事件</param>
        /// <returns>Task</returns>
        public Task Listen(string node, CacheCallback <string> callback)
        {
            NodeDataChangeHandler handler = null;

            handler = (ct, args) =>
            {
                //节点被删除或者节点数据改动时清理该节点对应的缓存数据
                if (args.Type == Watcher.Event.EventType.NodeDataChanged || args.Type == Watcher.Event.EventType.NodeDeleted)
                {
                    if (callback != null)
                    {
                        callback(args.Path);
                    }
                }
                return(Task.CompletedTask);
            };


            NodeDataChangeHandler handlerLast = null;

            if (_handlerRecord.ContainsKey(node))
            {
                handlerLast = _handlerRecord[node];
            }
            if (handlerLast != null)
            {
                //取消侦听
                _zkClient.UnSubscribeDataChange(node, handlerLast);
            }
            _handlerRecord[node] = handler;
            Task task = _zkClient.SubscribeDataChange(node, handler);

            return(task);
        }
        protected ConfigurationElementCollectionForInterface(Type elementType)
        {
            _elementType = elementType;

            _listType = typeof (List<>).MakeGenericType(new[]
                                                            {
                                                                _elementType
                                                            });
            _list = new CacheCallback<int, IList>(ignored=> CreateElements());
        }
Example #4
0
        public void PutItem(string key, object value, IEnumerable <string> dependentEntitySets, TimeSpan slidingExpiration,
                            DateTime absoluteExpiration, CacheCallback <string, object, object> callback)
        {
            if (callback != null)
            {
                CacheItemRemovedCallback c = (k, v, r) => callback(k, v, r);
                PutItemExec(key, value, dependentEntitySets, slidingExpiration, absoluteExpiration, c);
            }

            PutItemExec(key, value, dependentEntitySets, slidingExpiration, absoluteExpiration, null);
        }
        public void PutItem(string key, object value, IEnumerable<string> dependentEntitySets, TimeSpan slidingExpiration,
                                     DateTime absoluteExpiration, CacheCallback<string, object, object> callback)
        {
            if (callback != null)
            {
                CacheItemRemovedCallback c = (k, v, r) => callback(k, v, r);
                PutItemExec(key, value, dependentEntitySets, slidingExpiration, absoluteExpiration, c);
            }

            PutItemExec(key, value, dependentEntitySets, slidingExpiration, absoluteExpiration, null);
        }
Example #6
0
 public DataRequestDescriptor(string source, string cacheLocation)
 {
     this.Source        = source;
     this.CacheLocation = cacheLocation;
     // cache never expires by default
     MaxCacheAge        = null;
     CacheCallback      = null;
     CompletionCallback = null;
     PriorityCallback   = null;
     BasePriority       = 0;
     Description        = "";
 }
Example #7
0
 public DataRequestDescriptor(string source, string cacheLocation, CacheCallback callback) : this(source, cacheLocation)
 {
     CacheCallback = callback;
 }