46 lines
1.4 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
} |