Example #1
0
        public static CacheManager CreateFromConfig(CachingConfig cfg)
        {
            var services = new List <ICacheService>();

            if (cfg.IsCacheEnabled)
            {
                foreach (var providerCfg in cfg.ProviderConfigs)
                {
                    if (providerCfg is RedisConfig)
                    {
                        if (providerCfg.IsCacheEnabled)
                        {
                            services.Add(CacheServiceFactory.GetRedisCacheService(providerCfg as RedisConfig));
                        }
                    }

                    if (providerCfg is InMemoryConfig)
                    {
                        if (providerCfg.IsCacheEnabled)
                        {
                            services.Add(CacheServiceFactory.GetInMemoryCacheService(providerCfg));
                        }
                    }
                }
            }
            else
            {
                services.Add(CacheServiceFactory.GetDefaultEmptyCacheService());
            }

            var serviceManager = ServiceManager.Register(services);

            return(new CacheManager(serviceManager));
        }
Example #2
0
        public ICacheService GetCurrentCacheService()
        {
            var activeService = _services.FirstOrDefault(s => s.IsActive);

            var primaryService = _services.FirstOrDefault(s => s.Priority == CacheServicePriority.Primary);

            return(primaryService);

            //foreach (var service in _services.Where(s => s.Priority == CacheServicePriority.Secondary).OrderBy(s => s.IsActive))
            //{
            //    if (service.IsAvailable)
            //    {
            //        if (!service.IsActive)
            //        {
            //            //CachingLogger.Log.SwitchingCachingProvider($"from {activeService.Name} to {service.Name}");
            //            service.IsActive = true;
            //        }

            //        return service;
            //    }
            //}

            //CachingLogger.Log.SwitchingCachingProviderFailed(activeService.Name);

            return(CacheServiceFactory.GetDefaultEmptyCacheService());
        }