aboutsummaryrefslogtreecommitdiff
path: root/lib/VNLib.Plugins.Extensions.VNCache/src/MemoryCache.cs
diff options
context:
space:
mode:
authorLibravatar vnugent <public@vaughnnugent.com>2023-04-08 16:43:02 -0400
committerLibravatar vnugent <public@vaughnnugent.com>2023-04-08 16:43:02 -0400
commita866d831efc95900de2326f09531a54a65f18ea2 (patch)
treee61350d7bd831311bc5180bcf00e95a4401b9113 /lib/VNLib.Plugins.Extensions.VNCache/src/MemoryCache.cs
parentf56566feeeff0441ba8dd22e4ed755fab1ef7e11 (diff)
Expose public configuration api
Diffstat (limited to 'lib/VNLib.Plugins.Extensions.VNCache/src/MemoryCache.cs')
-rw-r--r--lib/VNLib.Plugins.Extensions.VNCache/src/MemoryCache.cs30
1 files changed, 21 insertions, 9 deletions
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<MemoryCacheConfig>()!,
+ pbase.IsDebug(),
+ pbase.Log
+ )
{
- //Get nested memory cache config
- MemoryCacheConfig memCacheConfig = config[VNCacheExtensions.MEMORY_CACHE_CONFIG_KEY].Deserialize<MemoryCacheConfig>()!;
+ }
+
+ 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);
}
///<inheritdoc/>