MrBot.Net/MRBot/Services/CommandProcessor.cs
2023-12-08 15:20:12 -06:00

46 lines
1.4 KiB
C#

using System;
using System.Threading;
using System.Threading.Tasks;
using LavishVMAPI;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using TinyIpc.DependencyInjection;
namespace MRBot.Services
{
internal sealed class CommandProcessor : BackgroundService
{
private readonly ITinyIpcFactory _tinyIpcFactory;
private readonly ILogger<CommandProcessor> _logger;
public CommandProcessor(ITinyIpcFactory tinyIpcFactory, ILogger<CommandProcessor> logger)
{
_tinyIpcFactory = tinyIpcFactory;
_logger = logger;
}
public override Task StartAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("Starting command processor");
return base.StartAsync(cancellationToken);
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
using var tinyIpcInstance = _tinyIpcFactory.CreateInstance();
try
{
await foreach (var message in tinyIpcInstance.MessageBus.SubscribeAsync(stoppingToken))
{
if(stoppingToken.IsCancellationRequested) return;
_logger.LogInformation($"Received message: {message}");
}
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
}
}