mirror of
https://github.com/Caraxi/mare.server.git
synced 2025-12-15 06:34:15 +01:00
let file shards register against main or so
This commit is contained in:
parent
532c123927
commit
3a9f93b157
12 changed files with 457 additions and 48 deletions
|
|
@ -5,6 +5,9 @@ namespace MareSynchronosShared.Services;
|
|||
public interface IConfigurationService<T> where T : class, IMareConfiguration
|
||||
{
|
||||
bool IsMain { get; }
|
||||
|
||||
event EventHandler ConfigChangedEvent;
|
||||
|
||||
T1 GetValue<T1>(string key);
|
||||
T1 GetValueOrDefault<T1>(string key, T1 defaultValue);
|
||||
string ToString();
|
||||
|
|
|
|||
|
|
@ -22,6 +22,8 @@ public class MareConfigurationServiceClient<T> : IHostedService, IConfigurationS
|
|||
private readonly CancellationTokenSource _updateTaskCts = new();
|
||||
private bool _initialized = false;
|
||||
private readonly HttpClient _httpClient;
|
||||
public event EventHandler ConfigChangedEvent;
|
||||
private IDisposable _onChanged;
|
||||
|
||||
private Uri GetRoute(string key, string value)
|
||||
{
|
||||
|
|
@ -39,6 +41,7 @@ public class MareConfigurationServiceClient<T> : IHostedService, IConfigurationS
|
|||
|
||||
public MareConfigurationServiceClient(ILogger<MareConfigurationServiceClient<T>> logger, IOptionsMonitor<T> config, ServerTokenGenerator serverTokenGenerator)
|
||||
{
|
||||
_onChanged = _config.OnChange((c) => { ConfigChangedEvent?.Invoke(this, EventArgs.Empty); });
|
||||
_config = config;
|
||||
_logger = logger;
|
||||
_serverTokenGenerator = serverTokenGenerator;
|
||||
|
|
@ -184,6 +187,7 @@ public class MareConfigurationServiceClient<T> : IHostedService, IConfigurationS
|
|||
{
|
||||
_updateTaskCts.Cancel();
|
||||
_httpClient.Dispose();
|
||||
_onChanged?.Dispose();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
|
|
@ -6,13 +6,18 @@ using System.Text;
|
|||
|
||||
namespace MareSynchronosShared.Services;
|
||||
|
||||
public class MareConfigurationServiceServer<T> : IConfigurationService<T> where T : class, IMareConfiguration
|
||||
public sealed class MareConfigurationServiceServer<T> : IDisposable, IConfigurationService<T> where T : class, IMareConfiguration
|
||||
{
|
||||
private readonly IOptionsMonitor<T> _config;
|
||||
private bool _disposed;
|
||||
|
||||
public bool IsMain => true;
|
||||
public event EventHandler ConfigChangedEvent;
|
||||
private IDisposable _onChanged;
|
||||
|
||||
public MareConfigurationServiceServer(IOptionsMonitor<T> config)
|
||||
{
|
||||
_onChanged = _config.OnChange((c) => { ConfigChangedEvent?.Invoke(this, EventArgs.Empty); });
|
||||
_config = config;
|
||||
}
|
||||
|
||||
|
|
@ -48,4 +53,15 @@ public class MareConfigurationServiceServer<T> : IConfigurationService<T> where
|
|||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (_disposed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_onChanged.Dispose();
|
||||
_disposed = true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue