Exemplo n.º 1
0
        /// <summary>
        /// 从容器中移除请求对应的标识
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public bool Remove(ServiceRequest request)
        {
            string key = GetKeyString(request);

            Cache.Remove(key);

            ResetIdentityKeyList();
            IdentityKeyList.Remove(key);//从全局缓存移除
            Cache.Insert <List <string> >(KeyListFlag, IdentityKeyList);
            return(true);
        }
Exemplo n.º 2
0
        public void Add(ServiceRequest request, ServiceIdentity identity)
        {
            string key = GetKeyString(request);

            identity.Key = key;
            //插入到全局缓存
            ResetIdentityKeyList();
            IdentityKeyList.Add(key);
            Cache.Insert <List <string> >(KeyListFlag, IdentityKeyList);
            Cache.Insert <ServiceIdentity>(key, identity,
                                           new System.Runtime.Caching.CacheItemPolicy()
            {
                SlidingExpiration = identity.Expire
            });
        }
Exemplo n.º 3
0
        /// <summary>
        /// 移除指定的标识
        /// </summary>
        /// <param name="identity"></param>
        /// <returns></returns>
        public bool Remove(ServiceIdentity identity)
        {
            ServiceIdentity item = this.Cache.Get <ServiceIdentity>(identity.Key);

            if (item != null && item.Key == identity.Key)
            {
                this.Cache.Remove(identity.Key);

                ResetIdentityKeyList();
                IdentityKeyList.Remove(identity.Key);//从全局缓存移除
                Cache.Insert <List <string> >(KeyListFlag, IdentityKeyList);
                return(true);
            }
            return(false);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 根据已有的标识,寻找容器中对应的标识对象
        /// </summary>
        /// <param name="identity"></param>
        /// <returns></returns>
        public ServiceIdentity Find(ServiceIdentity identity)
        {
            List <string> keyList = this.IdentityKeyList;

            foreach (string key in keyList.ToArray())
            {
                ServiceIdentity item = this.Cache.Get <ServiceIdentity>(key);
                if (item != null)
                {
                    if (item.Id == identity.Id && item.Name == identity.Name)
                    {
                        return(item);
                    }
                }
                else
                {
                    //从全局缓存移除
                    ResetIdentityKeyList();
                    IdentityKeyList.Remove(key);
                    Cache.Insert <List <string> >(KeyListFlag, IdentityKeyList);
                }
            }
            return(null);
        }