using System.Threading; using System.Threading.Tasks; using EasyNetQ; using Hangfire; using MalwareMultiScan.Backends.Interfaces; using MalwareMultiScan.Backends.Messages; using MalwareMultiScan.Scanner.Services.Interfaces; using Microsoft.Extensions.Logging; namespace MalwareMultiScan.Scanner.Services.Implementations { /// public class ScanHostedService : IScanHostedService { private readonly IScanBackend _backend; private readonly IBus _bus; private readonly ILogger _logger; /// /// Initialise scan hosted service. /// /// Logger. /// Scan backend. /// EasyNetQ bus. public ScanHostedService( ILogger logger, IScanBackend backend, IBus bus) { _logger = logger; _bus = bus; _backend = backend; } /// public Task StartAsync(CancellationToken cancellationToken) { _bus.Receive(_backend.Id, message => BackgroundJob.Enqueue(j => j.Process(message))); _logger.LogInformation( $"Started scan hosting service for the backend {_backend.Id}"); return Task.CompletedTask; } /// public Task StopAsync(CancellationToken cancellationToken) { _bus.Dispose(); _logger.LogInformation( $"Stopped scan hosting service for the backend {_backend.Id}"); return Task.CompletedTask; } } }