Files
SPT-Server-Build/SPTarkov.Server/Services/SptServerBackgroundService.cs
T
2025-07-18 15:21:55 +00:00

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);
}
}