using GB5Shared.DTO.JobEngine; using System.Threading; using System.Threading.Tasks; namespace FrameworkBLL.SchedulerTaskGenerator { // ============================================================ // IJobEngineHubNotifier — abstraction over SignalR hub push for // Track A job execution status. Mirrors FrameworkBLL/GOP/IGopHubNotifier. // // The concrete implementation (JobEngineHubNotifier in FrameworkSL) // wraps IHubContext. This abstraction // keeps FrameworkBLL free of ASP.NET types. // // Registration (FrameworkSL Program.cs): // services.AddSingleton(); // ============================================================ public interface IJobEngineHubNotifier { /// Pushed by the Quartz executor right after marking a job InProgress. Task PushJobStarted(int tenantId, JobStartedDTO status, CancellationToken ct = default); /// Pushed by the Quartz executor once the job's actions are published to Scheduler.Ready. Task PushJobDispatched(int tenantId, JobDispatchedDTO status, CancellationToken ct = default); /// Pushed by ActionProcessorWorker once every fanned-out action for a JobExecutionId reaches a terminal SUCCESS state. Task PushJobCompleted(int tenantId, JobCompletedDTO status, CancellationToken ct = default); /// Pushed by ActionProcessorWorker when a fanned-out action for a JobExecutionId fails. Task PushJobFailed(int tenantId, JobFailedDTO status, CancellationToken ct = default); } }