57 lines
1.7 KiB
C#
Raw Normal View History

using System.Threading;
using System.Threading.Tasks;
using EasyNetQ;
using Hangfire;
2020-10-26 17:06:29 +02:00
using MalwareMultiScan.Backends.Interfaces;
using MalwareMultiScan.Backends.Messages;
2020-10-29 16:09:56 +02:00
using MalwareMultiScan.Scanner.Services.Interfaces;
using Microsoft.Extensions.Logging;
2020-10-29 16:09:56 +02:00
namespace MalwareMultiScan.Scanner.Services.Implementations
{
2020-10-29 16:09:56 +02:00
/// <inheritdoc />
public class ScanHostedService : IScanHostedService
{
2020-10-26 17:06:29 +02:00
private readonly IScanBackend _backend;
2020-10-29 16:09:56 +02:00
private readonly IBus _bus;
private readonly ILogger<ScanHostedService> _logger;
2020-10-29 16:09:56 +02:00
/// <summary>
/// Initialise scan hosted service.
/// </summary>
/// <param name="logger">Logger.</param>
/// <param name="backend">Scan backend.</param>
/// <param name="bus">EasyNetQ bus.</param>
public ScanHostedService(
ILogger<ScanHostedService> logger,
IScanBackend backend, IBus bus)
{
_logger = logger;
2020-10-29 16:09:56 +02:00
_bus = bus;
2020-10-26 17:06:29 +02:00
_backend = backend;
}
2020-10-29 16:09:56 +02:00
/// <inheritdoc />
public Task StartAsync(CancellationToken cancellationToken)
{
_bus.Receive<ScanRequestMessage>(_backend.Id, message =>
BackgroundJob.Enqueue<IScanBackgroundJob>(j => j.Process(message)));
2020-10-26 17:06:29 +02:00
_logger.LogInformation(
$"Started scan hosting service for the backend {_backend.Id}");
return Task.CompletedTask;
}
2020-10-29 16:09:56 +02:00
/// <inheritdoc />
public Task StopAsync(CancellationToken cancellationToken)
{
_bus.Dispose();
2020-10-26 17:06:29 +02:00
_logger.LogInformation(
$"Stopped scan hosting service for the backend {_backend.Id}");
return Task.CompletedTask;
}
}
}