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 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 ConcurrentQueue<Operation> operationsInQueue = new();
|
||||||
private readonly HashSet<Operation> operationsInProcess = [];
|
private readonly HashSet<Operation> operationsInProcess = [];
|
||||||
|
|
||||||
|
|||||||
@ -5,8 +5,6 @@ namespace Hcs.WebApp.BackgroundServices
|
|||||||
{
|
{
|
||||||
public class ResultGetState
|
public class ResultGetState
|
||||||
{
|
{
|
||||||
public delegate void OperationEnded(int operationId, int campaignId, DateTime endedAt, string failureReason);
|
|
||||||
|
|
||||||
private readonly ConcurrentQueue<Operation> operationsInQueue = new();
|
private readonly ConcurrentQueue<Operation> operationsInQueue = new();
|
||||||
private readonly HashSet<Operation> operationsInProcess = [];
|
private readonly HashSet<Operation> operationsInProcess = [];
|
||||||
|
|
||||||
|
|||||||
@ -11,8 +11,7 @@
|
|||||||
@inject AuthenticationStateProvider AuthenticationStateProvider
|
@inject AuthenticationStateProvider AuthenticationStateProvider
|
||||||
@inject HeadquartersService HeadquartersService
|
@inject HeadquartersService HeadquartersService
|
||||||
@inject CampaignManagementState CampaignManagementState
|
@inject CampaignManagementState CampaignManagementState
|
||||||
@inject OperationExecutionState OperationExecutionState
|
@inject EventsAggregator EventsAggregator
|
||||||
@inject ResultGetState ResultGetState
|
|
||||||
|
|
||||||
<PageTitle>Кампании</PageTitle>
|
<PageTitle>Кампании</PageTitle>
|
||||||
|
|
||||||
@ -85,11 +84,9 @@
|
|||||||
CampaignManagementState.OnCampaignProgressStep += OnCampaignProgressStep;
|
CampaignManagementState.OnCampaignProgressStep += OnCampaignProgressStep;
|
||||||
CampaignManagementState.OnCampaignEnded += OnCampaignEnded;
|
CampaignManagementState.OnCampaignEnded += OnCampaignEnded;
|
||||||
|
|
||||||
OperationExecutionState.OnOperationStarted += OnOperationStarted;
|
EventsAggregator.OnOperationStarted += OnOperationStarted;
|
||||||
OperationExecutionState.OnOperationExecuted += OnOperationExecuted;
|
EventsAggregator.OnOperationExecuted += OnOperationExecuted;
|
||||||
OperationExecutionState.OnOperationEnded += OnOperationEnded;
|
EventsAggregator.OnOperationEnded += OnOperationEnded;
|
||||||
|
|
||||||
ResultGetState.OnOperationEnded += OnOperationEnded;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ChangeState(PageState.Idle);
|
ChangeState(PageState.Idle);
|
||||||
@ -263,10 +260,8 @@
|
|||||||
CampaignManagementState.OnCampaignProgressStep -= OnCampaignProgressStep;
|
CampaignManagementState.OnCampaignProgressStep -= OnCampaignProgressStep;
|
||||||
CampaignManagementState.OnCampaignEnded -= OnCampaignEnded;
|
CampaignManagementState.OnCampaignEnded -= OnCampaignEnded;
|
||||||
|
|
||||||
OperationExecutionState.OnOperationStarted -= OnOperationStarted;
|
EventsAggregator.OnOperationStarted -= OnOperationStarted;
|
||||||
OperationExecutionState.OnOperationExecuted -= OnOperationExecuted;
|
EventsAggregator.OnOperationExecuted -= OnOperationExecuted;
|
||||||
OperationExecutionState.OnOperationEnded -= OnOperationEnded;
|
EventsAggregator.OnOperationEnded -= OnOperationEnded;
|
||||||
|
|
||||||
ResultGetState.OnOperationEnded -= OnOperationEnded;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,8 +10,7 @@
|
|||||||
|
|
||||||
@inject AuthenticationStateProvider AuthenticationStateProvider
|
@inject AuthenticationStateProvider AuthenticationStateProvider
|
||||||
@inject HeadquartersService HeadquartersService
|
@inject HeadquartersService HeadquartersService
|
||||||
@inject OperationExecutionState OperationExecutionState
|
@inject EventsAggregator EventsAggregator
|
||||||
@inject ResultGetState ResultGetState
|
|
||||||
|
|
||||||
<PageTitle>Операции</PageTitle>
|
<PageTitle>Операции</PageTitle>
|
||||||
|
|
||||||
@ -61,12 +60,10 @@
|
|||||||
{
|
{
|
||||||
operations = await HeadquartersService.GetOperationsAsync();
|
operations = await HeadquartersService.GetOperationsAsync();
|
||||||
|
|
||||||
OperationExecutionState.OnOperationCreated += OnOperationCreated;
|
EventsAggregator.OnOperationCreated += OnOperationCreated;
|
||||||
OperationExecutionState.OnOperationStarted += OnOperationStarted;
|
EventsAggregator.OnOperationStarted += OnOperationStarted;
|
||||||
OperationExecutionState.OnOperationExecuted += OnOperationExecuted;
|
EventsAggregator.OnOperationExecuted += OnOperationExecuted;
|
||||||
OperationExecutionState.OnOperationEnded += OnOperationEnded;
|
EventsAggregator.OnOperationEnded += OnOperationEnded;
|
||||||
|
|
||||||
ResultGetState.OnOperationEnded += OnOperationEnded;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ChangeState(PageState.Idle);
|
ChangeState(PageState.Idle);
|
||||||
@ -137,11 +134,9 @@
|
|||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
OperationExecutionState.OnOperationCreated -= OnOperationCreated;
|
EventsAggregator.OnOperationCreated -= OnOperationCreated;
|
||||||
OperationExecutionState.OnOperationStarted -= OnOperationStarted;
|
EventsAggregator.OnOperationStarted -= OnOperationStarted;
|
||||||
OperationExecutionState.OnOperationExecuted -= OnOperationExecuted;
|
EventsAggregator.OnOperationExecuted -= OnOperationExecuted;
|
||||||
OperationExecutionState.OnOperationEnded -= OnOperationEnded;
|
EventsAggregator.OnOperationEnded -= OnOperationEnded;
|
||||||
|
|
||||||
ResultGetState.OnOperationEnded -= OnOperationEnded;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -74,10 +74,13 @@ builder.Services.AddScoped<HouseService>();
|
|||||||
builder.Services.AddSingleton<CampaignManagementState>();
|
builder.Services.AddSingleton<CampaignManagementState>();
|
||||||
builder.Services.AddSingleton<OperationExecutionState>();
|
builder.Services.AddSingleton<OperationExecutionState>();
|
||||||
builder.Services.AddSingleton<ResultGetState>();
|
builder.Services.AddSingleton<ResultGetState>();
|
||||||
|
|
||||||
builder.Services.AddSingleton<ManagerFactory>();
|
builder.Services.AddSingleton<ManagerFactory>();
|
||||||
builder.Services.AddSingleton<ExecutorFactory>();
|
builder.Services.AddSingleton<ExecutorFactory>();
|
||||||
builder.Services.AddSingleton<ResultGetterFactory>();
|
builder.Services.AddSingleton<ResultGetterFactory>();
|
||||||
|
|
||||||
|
builder.Services.AddSingleton<EventsAggregator>();
|
||||||
|
|
||||||
builder.Services.AddHostedService<CampaignManagementService>();
|
builder.Services.AddHostedService<CampaignManagementService>();
|
||||||
builder.Services.AddHostedService<OperationExecutionService>();
|
builder.Services.AddHostedService<OperationExecutionService>();
|
||||||
builder.Services.AddHostedService<ResultGetService>();
|
builder.Services.AddHostedService<ResultGetService>();
|
||||||
|
|||||||
Reference in New Issue
Block a user