mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
00faee48fe
* Fix handle of hashed file not closing * Limit concurrent downloads to a maximum of 8 * Dynamically increase job size to avoid downloads appearing stalled * Set downloader settings to avoid RAM and timeout issues * Improve logging around downloads * Adds more logging when starting stopping downloads * Improves error message when GameFileSource download fails * Stops logging errors when archive isn't available on WJ CDN * Add retry mechanism to SingleThreadedDownloader * Update CHANGELOG.md * Remove hard limit for download threads --------- Co-authored-by: UrbanCMC <UrbanCMC@web.de>
59 lines
1.4 KiB
C#
59 lines
1.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Wabbajack.Services.OSIntegrated;
|
|
|
|
public class ResourceSettingsManager
|
|
{
|
|
private readonly SettingsManager _manager;
|
|
private Dictionary<string,ResourceSetting>? _settings;
|
|
|
|
public ResourceSettingsManager(SettingsManager manager)
|
|
{
|
|
_manager = manager;
|
|
}
|
|
|
|
private SemaphoreSlim _lock = new(1);
|
|
|
|
public async Task<ResourceSetting> GetSettings(string name)
|
|
{
|
|
|
|
await _lock.WaitAsync();
|
|
try
|
|
{
|
|
_settings ??= await _manager.Load<Dictionary<string, ResourceSetting>>("resource_settings");
|
|
if (!_settings.ContainsKey(name))
|
|
{
|
|
var newSetting = new ResourceSetting
|
|
{
|
|
MaxTasks = Environment.ProcessorCount,
|
|
MaxThroughput = 0
|
|
};
|
|
|
|
_settings.Add(name, newSetting);
|
|
await SaveSettings(_settings);
|
|
}
|
|
|
|
var setting = _settings[name];
|
|
return setting;
|
|
}
|
|
finally
|
|
{
|
|
_lock.Release();
|
|
}
|
|
|
|
}
|
|
|
|
public class ResourceSetting
|
|
{
|
|
public long MaxTasks { get; set; }
|
|
public long MaxThroughput { get; set; }
|
|
}
|
|
|
|
public async Task SaveSettings(Dictionary<string, ResourceSetting> settings)
|
|
{
|
|
await _manager.Save("resource_settings", settings);
|
|
}
|
|
} |