From a866d831efc95900de2326f09531a54a65f18ea2 Mon Sep 17 00:00:00 2001 From: vnugent Date: Sat, 8 Apr 2023 16:43:02 -0400 Subject: Expose public configuration api --- .../src/MemoryCache.cs | 30 +++++++++++++++------- 1 file changed, 21 insertions(+), 9 deletions(-) (limited to 'lib/VNLib.Plugins.Extensions.VNCache/src/MemoryCache.cs') diff --git a/lib/VNLib.Plugins.Extensions.VNCache/src/MemoryCache.cs b/lib/VNLib.Plugins.Extensions.VNCache/src/MemoryCache.cs index 92d7048..a62b5db 100644 --- a/lib/VNLib.Plugins.Extensions.VNCache/src/MemoryCache.cs +++ b/lib/VNLib.Plugins.Extensions.VNCache/src/MemoryCache.cs @@ -48,7 +48,7 @@ namespace VNLib.Plugins.Extensions.VNCache | Table Size: {ts} | Bucket Size: {bs} | Max Objects: {obj} - | Memory Estimations: + | Max Memory Estimations: | 4K blocks: {4k}Mb | 8K blocks: {8k}Mb | 16K blocks: {16K}Mb @@ -61,17 +61,29 @@ namespace VNLib.Plugins.Extensions.VNCache private readonly IUnmangedHeap _bufferHeap; public MemoryCache(PluginBase pbase, IConfigScope config) + :this( + config[VNCacheExtensions.MEMORY_CACHE_CONFIG_KEY].Deserialize()!, + pbase.IsDebug(), + pbase.Log + ) { - //Get nested memory cache config - MemoryCacheConfig memCacheConfig = config[VNCacheExtensions.MEMORY_CACHE_CONFIG_KEY].Deserialize()!; + } + + public MemoryCache(MemoryCacheConfig config):this(config, false, null) + {} + + private MemoryCache(MemoryCacheConfig config, bool isDebug, ILogProvider? log) + { + //Validate config + config.Validate(); - if (pbase.IsDebug()) + if (isDebug) { //Use the debug heap IUnmangedHeap newHeap = MemoryUtil.InitializeNewHeapForProcess(); //Wrap in diag heap - _bufferHeap = new TrackedHeapWrapper(newHeap); + _bufferHeap = new TrackedHeapWrapper(newHeap); } else { @@ -80,7 +92,7 @@ namespace VNLib.Plugins.Extensions.VNCache } //Setup cache table - _memCache = new BlobCacheTable(memCacheConfig.TableSize, memCacheConfig.BucketSize, _bufferHeap, null); + _memCache = new BlobCacheTable(config.TableSize, config.BucketSize, _bufferHeap, null); /* * Default to json serialization by using the default @@ -91,10 +103,10 @@ namespace VNLib.Plugins.Extensions.VNCache _serialzer = defaultSerializer; _deserialzer = defaultSerializer; - PrintDebug(pbase.Log, memCacheConfig); + PrintDebug(log, config); } - private static void PrintDebug(ILogProvider log, MemoryCacheConfig config) + private static void PrintDebug(ILogProvider? log, MemoryCacheConfig config) { long maxObjects = config.BucketSize * config.TableSize; @@ -102,7 +114,7 @@ namespace VNLib.Plugins.Extensions.VNCache long size8kMb = (maxObjects * 8128)/MB_DIVISOR; long size16kMb = (maxObjects * 16384)/MB_DIVISOR; - log.Debug(DEBUG_TEMPLATE, config.TableSize, config.BucketSize, maxObjects, size4kMb, size8kMb, size16kMb); + log?.Debug(DEBUG_TEMPLATE, config.TableSize, config.BucketSize, maxObjects, size4kMb, size8kMb, size16kMb); } /// -- cgit