using Azaion.Common.Database; using Azaion.Common.DTO; using Azaion.Common.Events; using MediatR; using MessagePack; using Microsoft.Extensions.Logging; namespace Azaion.Common.Services.Inference; public class InferenceServiceEventHandler(IInferenceService inferenceService, IAnnotationService annotationService, IMediator mediator) : INotificationHandler, INotificationHandler, INotificationHandler { public async Task Handle(InferenceDataEvent e, CancellationToken ct) { var annotation = await annotationService.SaveAnnotation(e.AnnotationImage, ct); await mediator.Publish(new AnnotationAddedEvent(annotation), ct); } public async Task Handle(InferenceStatusEvent e, CancellationToken ct) { await mediator.Publish(new SetStatusTextEvent($"{e.MediaName}: {e.DetectionsCount} detections"), ct); } public async Task Handle(InferenceDoneEvent notification, CancellationToken cancellationToken) { await inferenceService.InferenceCancelTokenSource.CancelAsync(); } }