Change events args

This commit is contained in:
2025-11-05 18:17:19 +09:00
parent 8fd7d4a571
commit e58221c430
11 changed files with 96 additions and 65 deletions

View File

@ -5,14 +5,18 @@ 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 = [];
public bool Ready { get; set; }
public event Action<Operation> OnOperationStarted;
public event Action<Operation> OnOperationExecuted;
public event Action<Operation> OnOperationEnded;
public event OperationStarted OnOperationStarted;
public event OperationExecuted OnOperationExecuted;
public event OperationEnded OnOperationEnded;
public void EnqueueOperation(Operation operation)
{
@ -39,29 +43,29 @@ namespace Hcs.WebApp.BackgroundServices
return operationsInQueue.Any(x => x.CampaignId == campaignId) || operationsInProcess.Any(x => x.CampaignId == campaignId);
}
public void InvokeOnOperationStarted(Operation operation)
public void InvokeOnOperationStarted(int operationId, int campaignId, DateTime startedAt)
{
try
{
OnOperationStarted?.Invoke(operation);
OnOperationStarted?.Invoke(operationId, campaignId, startedAt);
}
catch { }
}
public void InvokeOnOperationExecuted(Operation operation)
public void InvokeOnOperationExecuted(int operationId, int campaignId, string messageGuid)
{
try
{
OnOperationExecuted?.Invoke(operation);
OnOperationExecuted?.Invoke(operationId, campaignId, messageGuid);
}
catch { }
}
public void InvokeOnOperationEnded(Operation operation)
public void InvokeOnOperationEnded(int operationId, int campaignId, DateTime endedAt, string failureReason)
{
try
{
OnOperationEnded?.Invoke(operation);
OnOperationEnded?.Invoke(operationId, campaignId, endedAt, failureReason);
}
catch { }
}