aboutsummaryrefslogtreecommitdiff
path: root/lib/VNLib.Plugins.Extensions.VNCache/src/VnCacheClient.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/VnCacheClient.cs
parentf56566feeeff0441ba8dd22e4ed755fab1ef7e11 (diff)
Expose public configuration api
Diffstat (limited to 'lib/VNLib.Plugins.Extensions.VNCache/src/VnCacheClient.cs')
-rw-r--r--lib/VNLib.Plugins.Extensions.VNCache/src/VnCacheClient.cs28
1 files changed, 15 insertions, 13 deletions
diff --git a/lib/VNLib.Plugins.Extensions.VNCache/src/VnCacheClient.cs b/lib/VNLib.Plugins.Extensions.VNCache/src/VnCacheClient.cs
index 1e1b74c..eea2de5 100644
--- a/lib/VNLib.Plugins.Extensions.VNCache/src/VnCacheClient.cs
+++ b/lib/VNLib.Plugins.Extensions.VNCache/src/VnCacheClient.cs
@@ -33,7 +33,6 @@ using System.Security.Cryptography;
using VNLib.Utils.Memory;
using VNLib.Utils.Logging;
-using VNLib.Utils.Extensions;
using VNLib.Hashing.IdentityUtility;
using VNLib.Data.Caching;
using VNLib.Data.Caching.Extensions;
@@ -41,7 +40,6 @@ using VNLib.Data.Caching.ObjectCache;
using VNLib.Net.Messaging.FBM.Client;
using VNLib.Plugins.Extensions.Loading;
-
namespace VNLib.Plugins.Extensions.VNCache
{
public interface ICacheRefreshPolicy
@@ -57,7 +55,7 @@ namespace VNLib.Plugins.Extensions.VNCache
[ConfigurationName(VNCacheExtensions.CACHE_CONFIG_KEY)]
internal class VnCacheClient : IGlobalCacheProvider, IAsyncBackgroundWork, IAsyncConfigurable
{
- private readonly TimeSpan RetryInterval;
+ private readonly VnCacheClientConfig _config;
/// <summary>
/// The internal client
@@ -70,20 +68,23 @@ namespace VNLib.Plugins.Extensions.VNCache
public bool IsConnected { get; private set; }
public VnCacheClient(PluginBase pbase, IConfigScope config)
+ :this(
+ config.Deserialze<VnCacheClientConfig>(),
+ pbase.IsDebug() ? pbase.Log : null
+ )
+ {}
+
+ public VnCacheClient(VnCacheClientConfig config, ILogProvider? debugLog)
{
- //Get required configuration variables
- int maxMessageSize = config["max_message_size"].GetInt32();
- string? brokerAddress = config["broker_address"].GetString() ?? throw new KeyNotFoundException("Missing required configuration variable broker_address");
- RetryInterval = config["retry_interval_sec"].GetTimeSpan(TimeParseType.Seconds);
- TimeSpan timeout = config["request_timeout_sec"].GetTimeSpan(TimeParseType.Seconds);
+ //Validate config
+ (config as IOnConfigValidation).Validate();
- Uri brokerUri = new(brokerAddress);
+ _config = config;
- //Setup debug log if the plugin is in debug mode
- ILogProvider? debugLog = pbase.IsDebug() ? pbase.Log : null;
+ Uri brokerUri = new(config.BrokerAddress);
//Init the client with default settings
- FBMClientConfig conf = FBMDataCacheExtensions.GetDefaultConfig(MemoryUtil.Shared, maxMessageSize, timeout, debugLog);
+ FBMClientConfig conf = FBMDataCacheExtensions.GetDefaultConfig(MemoryUtil.Shared, config.MaxMessageSize!.Value, config.RequestTimeout, debugLog);
Client = new(conf);
@@ -92,6 +93,7 @@ namespace VNLib.Plugins.Extensions.VNCache
.WithBroker(brokerUri)
.WithTls(brokerUri.Scheme == Uri.UriSchemeHttps);
}
+
public virtual async Task ConfigureServiceAsync(PluginBase plugin)
{
@@ -152,7 +154,7 @@ namespace VNLib.Plugins.Extensions.VNCache
if (servers?.Length == 0)
{
pluginLog.Warn("No cluster nodes found, retrying");
- await Task.Delay(RetryInterval, exitToken);
+ await Task.Delay(_config.RetryInterval, exitToken);
continue;
}