// // App.cs // // Copyright (c) František Boháček. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using NosSmooth.Core.Client; using NosSmooth.Core.Extensions; using NosSmooth.Data.NOSFiles; using NosSmooth.Packets.Extensions; using NosSmooth.Packets.Packets; using Remora.Results; namespace FileClient; /// /// The application. /// public class App : BackgroundService { private readonly INostaleClient _client; private readonly IPacketTypesRepository _packetRepository; private readonly NostaleDataFilesManager _filesManager; private readonly ILogger _logger; private readonly IHostLifetime _lifetime; /// /// Initializes a new instance of the class. /// /// The client. /// The packet repository. /// The file manager. /// The logger. /// The lifetime. public App ( INostaleClient client, IPacketTypesRepository packetRepository, NostaleDataFilesManager filesManager, ILogger logger, IHostLifetime lifetime ) { _client = client; _packetRepository = packetRepository; _filesManager = filesManager; _logger = logger; _lifetime = lifetime; } /// protected override async Task ExecuteAsync(CancellationToken stoppingToken) { var packetResult = _packetRepository.AddDefaultPackets(); if (!packetResult.IsSuccess) { _logger.LogResultError(packetResult); return; } var filesResult = _filesManager.Initialize(); if (!filesResult.IsSuccess) { _logger.LogResultError(filesResult); return; } var runResult = await _client.RunAsync(stoppingToken); if (!runResult.IsSuccess) { _logger.LogResultError(runResult); await _lifetime.StopAsync(default); } } }