public CacheProvider(ICache cache, ILogging logger, ICacheDependencyManager cacheDependencyManager, ICacheFeatureSupport featureSupport)
        {
            _cache          = cache;
            _logger         = logger;
            _featureSupport = featureSupport;
            if (_featureSupport == null)
            {
                _featureSupport = new CacheFeatureSupport(cache);
            }
            if (_config.IsCacheDependencyManagementEnabled)
            {
                _cacheDependencyManager = cacheDependencyManager;
                if (_cacheDependencyManager == null)
                {
                    _cacheDependencyManager = new GenericDependencyManager(_cache, _logger);
                }
                _logger.WriteInfoMessage(string.Format("CacheKey dependency management enabled, using {0}.", _cacheDependencyManager.Name));
            }
            else
            {
                _cacheDependencyManager = null;  // Dependency Management is disabled
                _logger.WriteInfoMessage("CacheKey dependency management not enabled.");
            }

            _featureSupport.Cache = _cache;
        }
Exemple #2
0
        private ICacheDependencyManager GetCacheDependencyManager(CacheConfig config, ICache cache)
        {
            ICacheDependencyManager dependencyMgr = null;
            var normalisedDependencyManagerConfig = !string.IsNullOrWhiteSpace(config.DependencyManagerToUse) ? config.DependencyManagerToUse.ToLowerInvariant() : string.Empty;

            switch (normalisedDependencyManagerConfig)
            {
            case CacheDependencyManagerTypes.Default:
                dependencyMgr = GetRedisCacheDependencyManagerIfApplicable(config, cache);
                break;

            case CacheDependencyManagerTypes.Redis:
                dependencyMgr = GetRedisCacheDependencyManagerIfApplicable(config, cache);
                break;

            case CacheDependencyManagerTypes.Generic:
                dependencyMgr = new GenericDependencyManager(cache, _logger, config);
                break;

            case CacheDependencyManagerTypes.Unspecified:
                // try and determine what one to use based on the cache type
                dependencyMgr = GetRedisCacheDependencyManagerIfApplicable(config, cache);
                break;

            default:
                dependencyMgr = new GenericDependencyManager(cache, _logger, config);
                break;
            }
            return(dependencyMgr);
        }
Exemple #3
0
        public static CacheFactoryComponentResult Create(ICache cache, ICacheDependencyManager dependencyManager, ICacheFeatureSupport featureSupport)
        {
            var result = new CacheFactoryComponentResult();

            if (cache == null || featureSupport == null)
            {
                throw new ArgumentNullException("Cache or Feature support component cannot be null");
            }
            result.Cache             = cache;
            result.DependencyManager = dependencyManager;
            result.FeatureSupport    = featureSupport;
            return(result);
        }
Exemple #4
0
        private ICacheDependencyManager GetRedisCacheDependencyManagerIfApplicable(CacheConfig config, ICache cache)
        {
            ICacheDependencyManager dependencyMgr = null;
            var redisCache = cache as RedisCacheAdapter;

            if (redisCache != null)
            {
                dependencyMgr = new RedisDependencyManager(cache, _logger, redisCache.RedisDatabase, config);
            }
            else
            {
                dependencyMgr = new GenericDependencyManager(cache, _logger, config);
            }
            return(dependencyMgr);
        }
Exemple #5
0
        public CacheProvider(ICache cache, ILogging logger, CacheConfig config, ICacheDependencyManager cacheDependencyManager, ICacheFeatureSupport featureSupport)
        {
            _cache                  = cache;
            _logger                 = logger;
            _featureSupport         = featureSupport;
            _config                 = config ?? CacheConfig.Create();
            _cacheDependencyManager = cacheDependencyManager;

            if (_config.IsCacheDependencyManagementEnabled && _cacheDependencyManager != null)
            {
                _logger.WriteInfoMessage(string.Format("CacheKey dependency management enabled, using {0}.", _cacheDependencyManager.Name));
            }
            else
            {
                _cacheDependencyManager = null;  // Dependency Management is disabled
                _logger.WriteInfoMessage("CacheKey dependency management not enabled.");
            }
        }
Exemple #6
0
        public override CacheFactoryComponentResult CreateCacheComponents()
        {
            var cacheEngine = CreateCacheEngine();

            ICacheDependencyManager dependencyMgr = null;

            if (CacheConfiguration.DependencyManagerToUse == CacheDependencyManagerTypes.Generic)
            {
                dependencyMgr = new GenericDependencyManager(cacheEngine, Logger, CacheConfiguration);
            }
            else
            {
                dependencyMgr = new RedisDependencyManager(cacheEngine, Logger, _redisConnection.GetDatabase(), CacheConfiguration);
            }
            var featureSupport = new RedisFeatureSupport();
            var result         = CacheFactoryComponentResult.Create(cacheEngine, dependencyMgr, featureSupport);

            return(result);
        }
 public CacheProvider(ICache cache, ILogging logger, ICacheDependencyManager cacheDependencyManager)
     : this(cache, logger, cacheDependencyManager, null)
 {
 }