41 lines
1.2 KiB
C#
41 lines
1.2 KiB
C#
using System.Runtime;
|
|
using SPTarkov.Server.Core.Loaders;
|
|
using SPTarkov.Server.Core.Models.Spt.Mod;
|
|
using SPTarkov.Server.Core.Utils;
|
|
|
|
namespace SPTarkov.Server.Services;
|
|
|
|
public class SptServerBackgroundService(
|
|
IReadOnlyList<SptMod> loadedMods,
|
|
BundleLoader bundleLoader,
|
|
App app
|
|
) : BackgroundService
|
|
{
|
|
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
|
{
|
|
if (ProgramStatics.MODS())
|
|
{
|
|
foreach (var mod in loadedMods)
|
|
{
|
|
if (mod.ModMetadata?.IsBundleMod == true)
|
|
{
|
|
// Convert to relative path
|
|
var relativeModPath = Path.GetRelativePath(
|
|
Directory.GetCurrentDirectory(),
|
|
mod.Directory
|
|
)
|
|
.Replace('\\', '/');
|
|
|
|
bundleLoader.AddBundles(relativeModPath);
|
|
}
|
|
}
|
|
}
|
|
|
|
await app.InitializeAsync();
|
|
|
|
// Run garbage collection now the server is ready to start
|
|
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
|
|
GC.Collect(GC.MaxGeneration, GCCollectionMode.Aggressive, true, true);
|
|
}
|
|
}
|