Add events aggregator
This commit is contained in:
8
Hcs.WebApp/BackgroundServices/Delegates.cs
Normal file
8
Hcs.WebApp/BackgroundServices/Delegates.cs
Normal file
@ -0,0 +1,8 @@
|
||||
namespace Hcs.WebApp.BackgroundServices
|
||||
{
|
||||
public delegate void OperationStarted(int operationId, int campaignId, DateTime startedAt);
|
||||
|
||||
public delegate void OperationExecuted(int operationId, int campaignId, string messageGuid);
|
||||
|
||||
public delegate void OperationEnded(int operationId, int campaignId, DateTime endedAt, string failureReason);
|
||||
}
|
||||
22
Hcs.WebApp/BackgroundServices/EventsAggregator.cs
Normal file
22
Hcs.WebApp/BackgroundServices/EventsAggregator.cs
Normal file
@ -0,0 +1,22 @@
|
||||
using Hcs.WebApp.Data.Hcs;
|
||||
|
||||
namespace Hcs.WebApp.BackgroundServices
|
||||
{
|
||||
public class EventsAggregator
|
||||
{
|
||||
public event Action<Operation> OnOperationCreated;
|
||||
public event OperationStarted OnOperationStarted;
|
||||
public event OperationExecuted OnOperationExecuted;
|
||||
public event OperationEnded OnOperationEnded;
|
||||
|
||||
public EventsAggregator(OperationExecutionState operationExecutionState, ResultGetState resultGetState)
|
||||
{
|
||||
operationExecutionState.OnOperationCreated += (a) => OnOperationCreated?.Invoke(a);
|
||||
operationExecutionState.OnOperationStarted += (a, b, c) => OnOperationStarted?.Invoke(a, b, c);
|
||||
operationExecutionState.OnOperationExecuted += (a, b, c) => OnOperationExecuted?.Invoke(a, b, c);
|
||||
operationExecutionState.OnOperationEnded += (a, b, c, d) => OnOperationEnded?.Invoke(a, b, c, d);
|
||||
|
||||
resultGetState.OnOperationEnded += (a, b, c, d) => OnOperationEnded?.Invoke(a, b, c, d);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -5,10 +5,6 @@ namespace Hcs.WebApp.BackgroundServices
|
||||
{
|
||||
public class OperationExecutionState
|
||||
{
|
||||
public delegate void OperationStarted(int operationId, int campaignId, DateTime startedAt);
|
||||
public delegate void OperationExecuted(int operationId, int campaignId, string messageGuid);
|
||||
public delegate void OperationEnded(int operationId, int campaignId, DateTime endedAt, string failureReason);
|
||||
|
||||
private readonly ConcurrentQueue<Operation> operationsInQueue = new();
|
||||
private readonly HashSet<Operation> operationsInProcess = [];
|
||||
|
||||
|
||||
@ -5,8 +5,6 @@ namespace Hcs.WebApp.BackgroundServices
|
||||
{
|
||||
public class ResultGetState
|
||||
{
|
||||
public delegate void OperationEnded(int operationId, int campaignId, DateTime endedAt, string failureReason);
|
||||
|
||||
private readonly ConcurrentQueue<Operation> operationsInQueue = new();
|
||||
private readonly HashSet<Operation> operationsInProcess = [];
|
||||
|
||||
|
||||
@ -11,8 +11,7 @@
|
||||
@inject AuthenticationStateProvider AuthenticationStateProvider
|
||||
@inject HeadquartersService HeadquartersService
|
||||
@inject CampaignManagementState CampaignManagementState
|
||||
@inject OperationExecutionState OperationExecutionState
|
||||
@inject ResultGetState ResultGetState
|
||||
@inject EventsAggregator EventsAggregator
|
||||
|
||||
<PageTitle>Кампании</PageTitle>
|
||||
|
||||
@ -85,11 +84,9 @@
|
||||
CampaignManagementState.OnCampaignProgressStep += OnCampaignProgressStep;
|
||||
CampaignManagementState.OnCampaignEnded += OnCampaignEnded;
|
||||
|
||||
OperationExecutionState.OnOperationStarted += OnOperationStarted;
|
||||
OperationExecutionState.OnOperationExecuted += OnOperationExecuted;
|
||||
OperationExecutionState.OnOperationEnded += OnOperationEnded;
|
||||
|
||||
ResultGetState.OnOperationEnded += OnOperationEnded;
|
||||
EventsAggregator.OnOperationStarted += OnOperationStarted;
|
||||
EventsAggregator.OnOperationExecuted += OnOperationExecuted;
|
||||
EventsAggregator.OnOperationEnded += OnOperationEnded;
|
||||
}
|
||||
|
||||
ChangeState(PageState.Idle);
|
||||
@ -263,10 +260,8 @@
|
||||
CampaignManagementState.OnCampaignProgressStep -= OnCampaignProgressStep;
|
||||
CampaignManagementState.OnCampaignEnded -= OnCampaignEnded;
|
||||
|
||||
OperationExecutionState.OnOperationStarted -= OnOperationStarted;
|
||||
OperationExecutionState.OnOperationExecuted -= OnOperationExecuted;
|
||||
OperationExecutionState.OnOperationEnded -= OnOperationEnded;
|
||||
|
||||
ResultGetState.OnOperationEnded -= OnOperationEnded;
|
||||
EventsAggregator.OnOperationStarted -= OnOperationStarted;
|
||||
EventsAggregator.OnOperationExecuted -= OnOperationExecuted;
|
||||
EventsAggregator.OnOperationEnded -= OnOperationEnded;
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,8 +10,7 @@
|
||||
|
||||
@inject AuthenticationStateProvider AuthenticationStateProvider
|
||||
@inject HeadquartersService HeadquartersService
|
||||
@inject OperationExecutionState OperationExecutionState
|
||||
@inject ResultGetState ResultGetState
|
||||
@inject EventsAggregator EventsAggregator
|
||||
|
||||
<PageTitle>Операции</PageTitle>
|
||||
|
||||
@ -61,12 +60,10 @@
|
||||
{
|
||||
operations = await HeadquartersService.GetOperationsAsync();
|
||||
|
||||
OperationExecutionState.OnOperationCreated += OnOperationCreated;
|
||||
OperationExecutionState.OnOperationStarted += OnOperationStarted;
|
||||
OperationExecutionState.OnOperationExecuted += OnOperationExecuted;
|
||||
OperationExecutionState.OnOperationEnded += OnOperationEnded;
|
||||
|
||||
ResultGetState.OnOperationEnded += OnOperationEnded;
|
||||
EventsAggregator.OnOperationCreated += OnOperationCreated;
|
||||
EventsAggregator.OnOperationStarted += OnOperationStarted;
|
||||
EventsAggregator.OnOperationExecuted += OnOperationExecuted;
|
||||
EventsAggregator.OnOperationEnded += OnOperationEnded;
|
||||
}
|
||||
|
||||
ChangeState(PageState.Idle);
|
||||
@ -137,11 +134,9 @@
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
OperationExecutionState.OnOperationCreated -= OnOperationCreated;
|
||||
OperationExecutionState.OnOperationStarted -= OnOperationStarted;
|
||||
OperationExecutionState.OnOperationExecuted -= OnOperationExecuted;
|
||||
OperationExecutionState.OnOperationEnded -= OnOperationEnded;
|
||||
|
||||
ResultGetState.OnOperationEnded -= OnOperationEnded;
|
||||
EventsAggregator.OnOperationCreated -= OnOperationCreated;
|
||||
EventsAggregator.OnOperationStarted -= OnOperationStarted;
|
||||
EventsAggregator.OnOperationExecuted -= OnOperationExecuted;
|
||||
EventsAggregator.OnOperationEnded -= OnOperationEnded;
|
||||
}
|
||||
}
|
||||
|
||||
@ -74,10 +74,13 @@ builder.Services.AddScoped<HouseService>();
|
||||
builder.Services.AddSingleton<CampaignManagementState>();
|
||||
builder.Services.AddSingleton<OperationExecutionState>();
|
||||
builder.Services.AddSingleton<ResultGetState>();
|
||||
|
||||
builder.Services.AddSingleton<ManagerFactory>();
|
||||
builder.Services.AddSingleton<ExecutorFactory>();
|
||||
builder.Services.AddSingleton<ResultGetterFactory>();
|
||||
|
||||
builder.Services.AddSingleton<EventsAggregator>();
|
||||
|
||||
builder.Services.AddHostedService<CampaignManagementService>();
|
||||
builder.Services.AddHostedService<OperationExecutionService>();
|
||||
builder.Services.AddHostedService<ResultGetService>();
|
||||
|
||||
Reference in New Issue
Block a user