Exemplo n.º 1
0
        public void InitFromConfig(string cacheName, NameValueCollection parameters)
        {
            if (!parameters.AllKeys.Contains("serverList") || parameters["serverList"] == null || parameters["serverList"].Trim().Length <= 0)
            {
                throw new ConfigurationErrorsException("Please config the 'serverList' in parameters for cache type '" + typeof(MemcachedCache).AssemblyQualifiedName + "'");
            }
            string pname = string.Format(PARTITION_NAME, cacheName);

            if (!MemcachedClient.Exists(pname))
            {
                MemcachedClient.Setup(pname, parameters["serverList"].Trim().Split(new char[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries));
            }

            m_CacheManager          = MemcachedClient.GetInstance(pname);
            m_DistributedKeyStorage = new DistributedKeyStorage(m_CacheManager);

            if (parameters.AllKeys.Contains("maxPoolSize") && parameters["maxPoolSize"] != null && parameters["maxPoolSize"].Trim().Length > 0)
            {
                m_CacheManager.MaxPoolSize = Convert.ToUInt32(parameters["maxPoolSize"].Trim());
            }
            if (parameters.AllKeys.Contains("minPoolSize") && parameters["minPoolSize"] != null && parameters["minPoolSize"].Trim().Length > 0)
            {
                m_CacheManager.MinPoolSize = Convert.ToUInt32(parameters["minPoolSize"].Trim());
            }
            if (parameters.AllKeys.Contains("sendReceiveTimeout") && parameters["sendReceiveTimeout"] != null && parameters["sendReceiveTimeout"].Trim().Length > 0)
            {
                m_CacheManager.SendReceiveTimeout = (int)(TimeSpan.Parse(parameters["sendReceiveTimeout"].Trim()).TotalMilliseconds);
            }
            if (parameters.AllKeys.Contains("socketRecycleAge") && parameters["socketRecycleAge"] != null && parameters["socketRecycleAge"].Trim().Length > 0)
            {
                m_CacheManager.SocketRecycleAge = TimeSpan.Parse(parameters["socketRecycleAge"].Trim());
            }
            if (parameters.AllKeys.Contains("keyPrefix") && parameters["keyPrefix"] != null && parameters["keyPrefix"].Trim().Length > 0)
            {
                m_CacheManager.KeyPrefix = parameters["keyPrefix"].Trim();
            }
            if (parameters.AllKeys.Contains("connectTimeout") && parameters["connectTimeout"] != null && parameters["connectTimeout"].Trim().Length > 0)
            {
                m_CacheManager.ConnectTimeout = (int)(TimeSpan.Parse(parameters["connectTimeout"].Trim()).TotalMilliseconds);
            }
            if (parameters.AllKeys.Contains("compressionThreshold") && parameters["compressionThreshold"] != null && parameters["compressionThreshold"].Trim().Length > 0)
            {
                m_CacheManager.CompressionThreshold = Convert.ToUInt32(parameters["compressionThreshold"].Trim());
            }
            if (parameters.AllKeys.Contains("localCacheExpiry") && parameters["localCacheExpiry"] != null && parameters["localCacheExpiry"].Trim().Length > 0)
            {
                m_LocalCacheExpiry = TimeSpan.Parse(parameters["localCacheExpiry"].Trim());
            }
            if (parameters.AllKeys.Contains("localCacheName") && parameters["localCacheName"] != null && parameters["localCacheName"].Trim().Length > 0)
            {
                m_LocalCache = CacheFactory.GetInstance(parameters["localCacheName"].Trim());
            }
            m_Timer = new Timer(new TimerCallback(RealHitSlidingCacheItem), null, 1000, 1000);
        }