using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace Svrnty.CQRS.Events.RabbitMQ.Delivery;
///
/// Hosted service that manages the lifecycle of the RabbitMQ event delivery provider.
///
internal sealed class RabbitMQEventDeliveryHostedService : IHostedService
{
private readonly RabbitMQEventDeliveryProvider _provider;
private readonly ILogger _logger;
public RabbitMQEventDeliveryHostedService(
RabbitMQEventDeliveryProvider provider,
ILogger logger)
{
_provider = provider ?? throw new ArgumentNullException(nameof(provider));
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
public async Task StartAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("Starting RabbitMQ event delivery hosted service");
await _provider.StartAsync(cancellationToken);
}
public async Task StopAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("Stopping RabbitMQ event delivery hosted service");
await _provider.StopAsync(cancellationToken);
}
}