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; }
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); }
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); }
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); }
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."); } }
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) { }