public ConvTask(DbCtx dbctx, Track track, MCloudConfig.Converter conv, ILogger <ConvertService> logger) { Dbctx = dbctx; Track = track; Conv = conv; this.logger = logger; }
public async Task <ConvResult> GetConverted(DbCtx dbctx, Track track, MCloudConfig.Converter conv) { var taskKey = track.id + "-" + conv.Name; var task = tasks.GetOrAdd(taskKey, (key) => { return(new ConvTask(dbctx, track, conv, logger)); }); try { logger.LogInformation("'{taskKey}' start convert", taskKey); await task.Run(out var alreadyRunning); logger.LogInformation("'{taskKey}' end (already existed = {val})", taskKey, alreadyRunning); return(new ConvResult { TrackFile = task.TrackFile, AlreadyExisted = alreadyRunning }); } finally { tasks.TryRemove(taskKey, out _); } }