implement message types provider

This commit is contained in:
2026-02-27 21:56:55 +01:00
parent 94ec4e7135
commit 47d62885b1
5 changed files with 38 additions and 24 deletions

View File

@@ -11,11 +11,13 @@ namespace AipsWorker;
public class WorkerService : BackgroundService
{
private readonly IDispatcher _dispatcher;
private readonly IMessageTypesProvider _messageTypesProvider;
private readonly SubscribeMethodUtility _subscribeMethodUtility;
public WorkerService(IMessageSubscriber subscriber, IDispatcher dispatcher)
public WorkerService(IMessageSubscriber subscriber, IDispatcher dispatcher, IMessageTypesProvider messageTypesProvider)
{
_dispatcher = dispatcher;
_messageTypesProvider = messageTypesProvider;
_subscribeMethodUtility = new SubscribeMethodUtility(subscriber);
}
@@ -23,7 +25,7 @@ public class WorkerService : BackgroundService
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
var messageTypes = GetAllMessageTypes();
var messageTypes = _messageTypesProvider.GetAllMessageTypes();
foreach (var messageType in messageTypes)
{
@@ -33,20 +35,6 @@ public class WorkerService : BackgroundService
}
}
private IReadOnlyCollection<Type> GetAllMessageTypes()
{
var messageInterface = typeof(IMessage);
var assembly = messageInterface.Assembly;
return assembly
.GetTypes()
.Where(t =>
!t.IsAbstract &&
!t.IsInterface &&
messageInterface.IsAssignableFrom(t))
.ToList();
}
private async Task HandleMessage<T>(T message, CancellationToken ct) where T : IMessage
{
try