Files
ParadoxSaveParser/ParadoxSaveParser.WebAPI/BackgroundTasks/BackgroundJobManager.cs
T

30 lines
1.1 KiB
C#

using ParadoxSaveParser.WebAPI.Database;
using ParadoxSaveParser.WebAPI.SaveDataFilters;
namespace ParadoxSaveParser.WebAPI.BackgroundTasks;
public class BackgroundJobManager
{
private readonly ILogger _parentLogger;
private readonly Config.SaveUploadConfig _uploadConfig;
private readonly int _zstdCompressionLevel;
private long _lastJobId;
public BackgroundJobManager(ILogger logger, Config.SaveUploadConfig uploadConfig, int zstdCompressionLevel)
{
_parentLogger = logger;
_uploadConfig = uploadConfig;
_zstdCompressionLevel = zstdCompressionLevel;
}
public SaveParsingOperation StartNewParsingOperation(
SaveFileMetadata meta, ISaveDataFilter filter, CancellationToken ct)
{
long nextId = Interlocked.Increment(ref _lastJobId);
var contextLogger = new ContextLogger($"BackgroundJob-{nextId}", _parentLogger);
var op = new SaveParsingOperation(nextId, meta, filter,
_uploadConfig.MaxSizePlainTextBytes, _zstdCompressionLevel, contextLogger, ct);
op.StartAsync();
return op;
}
}