internal static IGrainDirectoryCache CreateGrainDirectoryCache(GrainDirectoryOptions options)
        {
            if (options.CacheSize <= 0)
            {
                return(new NullGrainDirectoryCache());
            }

            switch (options.CachingStrategy)
            {
            case GrainDirectoryOptions.CachingStrategyType.None:
                return(new NullGrainDirectoryCache());

            case GrainDirectoryOptions.CachingStrategyType.LRU:
                return(new LRUBasedGrainDirectoryCache(options.CacheSize, options.MaximumCacheTTL));

            default:
                return(new AdaptiveGrainDirectoryCache(options.InitialCacheTTL, options.MaximumCacheTTL, options.CacheTTLExtensionFactor, options.CacheSize));
            }
        }
Example #2
0
        public TestDirectoryCache(IServiceProvider serviceProvider)
        {
            var options = new GrainDirectoryOptions();

            InnerCache = GrainDirectoryCacheFactory.CreateGrainDirectoryCache(serviceProvider, options);
        }
Example #3
0
        public static IGrainDirectoryCache CreateGrainDirectoryCache(IServiceProvider services, GrainDirectoryOptions options)
        {
            if (options.CacheSize <= 0)
            {
                return(new NullGrainDirectoryCache());
            }

            switch (options.CachingStrategy)
            {
            case GrainDirectoryOptions.CachingStrategyType.None:
                return(new NullGrainDirectoryCache());

            case GrainDirectoryOptions.CachingStrategyType.LRU:
                return(new LRUBasedGrainDirectoryCache(options.CacheSize, options.MaximumCacheTTL));

            case GrainDirectoryOptions.CachingStrategyType.Adaptive:
                return(new AdaptiveGrainDirectoryCache(options.InitialCacheTTL, options.MaximumCacheTTL, options.CacheTTLExtensionFactor, options.CacheSize));

            case GrainDirectoryOptions.CachingStrategyType.Custom:
            default:
                return(services.GetRequiredService <IGrainDirectoryCache>());
            }
        }