Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -0,0 +1,6 @@
|
|||||||
|
namespace AipsCore.Application.Abstract.MessageBroking;
|
||||||
|
|
||||||
|
public interface IMessageTypesProvider
|
||||||
|
{
|
||||||
|
ICollection<Type> GetAllMessageTypes();
|
||||||
|
}
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
namespace AipsCore.Application.Abstract.MessageBroking;
|
|
||||||
|
|
||||||
public enum MessageTag
|
|
||||||
{
|
|
||||||
Worker,
|
|
||||||
RT
|
|
||||||
}
|
|
||||||
23
dotnet/AipsWorker/Messages/MessageTypesProvider.cs
Normal file
23
dotnet/AipsWorker/Messages/MessageTypesProvider.cs
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
using AipsCore.Application.Abstract.MessageBroking;
|
||||||
|
using AipsCore.Application.Common.Message.AddArrow;
|
||||||
|
using AipsCore.Application.Common.Message.AddLine;
|
||||||
|
using AipsCore.Application.Common.Message.AddRectangle;
|
||||||
|
using AipsCore.Application.Common.Message.AddTextShape;
|
||||||
|
using AipsCore.Application.Common.Message.MoveShape;
|
||||||
|
|
||||||
|
namespace AipsWorker.Messages;
|
||||||
|
|
||||||
|
public class MessageTypesProvider : IMessageTypesProvider
|
||||||
|
{
|
||||||
|
public ICollection<Type> GetAllMessageTypes()
|
||||||
|
{
|
||||||
|
return
|
||||||
|
[
|
||||||
|
typeof(AddArrowMessage),
|
||||||
|
typeof(AddLineMessage),
|
||||||
|
typeof(AddRectangleMessage),
|
||||||
|
typeof(AddTextShapeMessage),
|
||||||
|
typeof(MoveShapeMessage)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
using AipsCore.Infrastructure.DI;
|
using AipsCore.Application.Abstract.MessageBroking;
|
||||||
|
using AipsCore.Infrastructure.DI;
|
||||||
using AipsWorker;
|
using AipsWorker;
|
||||||
|
using AipsWorker.Messages;
|
||||||
using AipsWorker.Utilities;
|
using AipsWorker.Utilities;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Hosting;
|
using Microsoft.Extensions.Hosting;
|
||||||
@@ -13,6 +15,8 @@ builder.ConfigureServices((context, services) =>
|
|||||||
services.AddAips(context.Configuration);
|
services.AddAips(context.Configuration);
|
||||||
services.AddAipsMessageHandlers();
|
services.AddAipsMessageHandlers();
|
||||||
|
|
||||||
|
services.AddSingleton<IMessageTypesProvider, MessageTypesProvider>();
|
||||||
|
|
||||||
services.AddHostedService<WorkerService>();
|
services.AddHostedService<WorkerService>();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -11,11 +11,13 @@ namespace AipsWorker;
|
|||||||
public class WorkerService : BackgroundService
|
public class WorkerService : BackgroundService
|
||||||
{
|
{
|
||||||
private readonly IDispatcher _dispatcher;
|
private readonly IDispatcher _dispatcher;
|
||||||
|
private readonly IMessageTypesProvider _messageTypesProvider;
|
||||||
private readonly SubscribeMethodUtility _subscribeMethodUtility;
|
private readonly SubscribeMethodUtility _subscribeMethodUtility;
|
||||||
|
|
||||||
public WorkerService(IMessageSubscriber subscriber, IDispatcher dispatcher)
|
public WorkerService(IMessageSubscriber subscriber, IDispatcher dispatcher, IMessageTypesProvider messageTypesProvider)
|
||||||
{
|
{
|
||||||
_dispatcher = dispatcher;
|
_dispatcher = dispatcher;
|
||||||
|
_messageTypesProvider = messageTypesProvider;
|
||||||
_subscribeMethodUtility = new SubscribeMethodUtility(subscriber);
|
_subscribeMethodUtility = new SubscribeMethodUtility(subscriber);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -23,7 +25,7 @@ public class WorkerService : BackgroundService
|
|||||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
||||||
{
|
{
|
||||||
|
|
||||||
var messageTypes = GetAllMessageTypes();
|
var messageTypes = _messageTypesProvider.GetAllMessageTypes();
|
||||||
|
|
||||||
foreach (var messageType in messageTypes)
|
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
|
private async Task HandleMessage<T>(T message, CancellationToken ct) where T : IMessage
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|||||||
Reference in New Issue
Block a user