mirror of
https://github.com/9ParsonsB/Pulsar.git
synced 2025-07-01 16:33:43 -04:00
Fix issues with Journal handling
Implement basic database Handle startup events only send events after the most recent LoadGame
This commit is contained in:
46
Pulsar/Features/Outfitting/OutfittingService.cs
Normal file
46
Pulsar/Features/Outfitting/OutfittingService.cs
Normal file
@ -0,0 +1,46 @@
|
||||
namespace Pulsar.Features.Outfitting;
|
||||
|
||||
using Observatory.Framework.Files;
|
||||
|
||||
public interface IOutfittingService : IJournalHandler<OutfittingFile>;
|
||||
|
||||
public class OutfittingService(IOptions<PulsarConfiguration> options, IEventHubContext hub, ILogger<OutfittingService> logger) : IOutfittingService
|
||||
{
|
||||
public async Task<OutfittingFile> Get()
|
||||
{
|
||||
var filePath = Path.Combine(options.Value.JournalDirectory, FileName);
|
||||
|
||||
if (!FileHelper.ValidateFile(filePath))
|
||||
{
|
||||
return new OutfittingFile();
|
||||
}
|
||||
|
||||
await using var file = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
|
||||
var outfitting = await JsonSerializer.DeserializeAsync<OutfittingFile>(file);
|
||||
if (outfitting != null) return outfitting;
|
||||
|
||||
logger.LogWarning("Failed to deserialize outfitting file {File}", filePath);
|
||||
return new OutfittingFile();
|
||||
}
|
||||
|
||||
public async Task HandleFile(string path, CancellationToken token = new ())
|
||||
{
|
||||
if (!FileHelper.ValidateFile(path))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var file = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
|
||||
var outfitting = await JsonSerializer.DeserializeAsync<OutfittingFile>(file, cancellationToken: token);
|
||||
|
||||
if (outfitting == null)
|
||||
{
|
||||
logger.LogWarning("Failed to deserialize outfitting file {FilePath}", file);
|
||||
return;
|
||||
}
|
||||
|
||||
await hub.Clients.All.OutfittingUpdated(outfitting);
|
||||
}
|
||||
|
||||
public string FileName => FileHandlerService.OutfittingFileName;
|
||||
}
|
Reference in New Issue
Block a user