partly or unimplemented features - now implemented
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
// SPDX-License-Identifier: BUSL-1.1
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using StellaOps.Messaging;
|
||||
using StellaOps.Messaging.Abstractions;
|
||||
using StellaOps.Provcache.Events;
|
||||
using StellaOps.Provcache.Invalidation;
|
||||
|
||||
namespace StellaOps.Provcache;
|
||||
|
||||
public static partial class ProvcacheServiceCollectionExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Adds event-driven invalidator services for Provcache.
|
||||
/// </summary>
|
||||
/// <param name="services">The service collection.</param>
|
||||
/// <returns>The service collection for chaining.</returns>
|
||||
public static IServiceCollection AddProvcacheInvalidators(this IServiceCollection services)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(services);
|
||||
|
||||
services.TryAddSingleton<IEventStream<SignerRevokedEvent>>(sp =>
|
||||
{
|
||||
var factory = sp.GetRequiredService<IEventStreamFactory>();
|
||||
return factory.Create<SignerRevokedEvent>(new EventStreamOptions
|
||||
{
|
||||
StreamName = SignerRevokedEvent.StreamName
|
||||
});
|
||||
});
|
||||
|
||||
services.TryAddSingleton<IEventStream<FeedEpochAdvancedEvent>>(sp =>
|
||||
{
|
||||
var factory = sp.GetRequiredService<IEventStreamFactory>();
|
||||
return factory.Create<FeedEpochAdvancedEvent>(new EventStreamOptions
|
||||
{
|
||||
StreamName = FeedEpochAdvancedEvent.StreamName
|
||||
});
|
||||
});
|
||||
|
||||
services.TryAddEnumerable(ServiceDescriptor.Singleton<IProvcacheInvalidator, SignerSetInvalidator>());
|
||||
services.TryAddEnumerable(ServiceDescriptor.Singleton<IProvcacheInvalidator, FeedEpochInvalidator>());
|
||||
services.TryAddEnumerable(ServiceDescriptor.Singleton<IHostedService, InvalidatorHostedService>());
|
||||
|
||||
return services;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user