Updated OnUpdate to return task<bool>

This commit is contained in:
Chomp
2025-06-05 14:12:10 +01:00
parent 969e94975e
commit 09211c78ee
7 changed files with 38 additions and 32 deletions
@@ -17,10 +17,10 @@ public class DialogueCallbacks(
) )
: IOnUpdate : IOnUpdate
{ {
public Task OnUpdate(long timeSinceLastRun) public Task<bool> OnUpdate(long timeSinceLastRun)
{ {
_dialogueController.Update(); _dialogueController.Update();
return Task.CompletedTask; return Task.FromResult(true);
} }
/// <summary> /// <summary>
@@ -20,12 +20,12 @@ public class HideoutCallbacks(
private readonly HideoutConfig _hideoutConfig = _configServer.GetConfig<HideoutConfig>(); private readonly HideoutConfig _hideoutConfig = _configServer.GetConfig<HideoutConfig>();
private long _lastRunOnUpdateTimestamp = long.MaxValue; private long _lastRunOnUpdateTimestamp = long.MaxValue;
public Task OnUpdate(long secondsSinceLastRun) public Task<bool> OnUpdate(long secondsSinceLastRun)
{ {
if (_timeUtil.GetTimeStamp() <= _lastRunOnUpdateTimestamp + _hideoutConfig.RunIntervalSeconds) if (_timeUtil.GetTimeStamp() <= _lastRunOnUpdateTimestamp + _hideoutConfig.RunIntervalSeconds)
{ {
// Not enough time has passed since last run, exit early // Not enough time has passed since last run, exit early
return Task.CompletedTask; return Task.FromResult(false);
} }
_hideoutController.Update(); _hideoutController.Update();
@@ -33,7 +33,7 @@ public class HideoutCallbacks(
// Store last completion time for later use // Store last completion time for later use
_lastRunOnUpdateTimestamp = _timeUtil.GetTimeStamp(); _lastRunOnUpdateTimestamp = _timeUtil.GetTimeStamp();
return Task.CompletedTask; return Task.FromResult(true);
} }
/// <summary> /// <summary>
@@ -16,20 +16,27 @@ public class InsuranceCallbacks(
InsuranceController _insuranceController, InsuranceController _insuranceController,
InsuranceService _insuranceService, InsuranceService _insuranceService,
HttpResponseUtil _httpResponseUtil, HttpResponseUtil _httpResponseUtil,
ConfigServer _configServer ConfigServer _configServer,
TimeUtil _timeUtil
) )
: IOnUpdate : IOnUpdate
{ {
private readonly InsuranceConfig _insuranceConfig = _configServer.GetConfig<InsuranceConfig>(); private readonly InsuranceConfig _insuranceConfig = _configServer.GetConfig<InsuranceConfig>();
private long _lastRunOnUpdateTimestamp = long.MaxValue;
public Task OnUpdate(long timeSinceLastRun) public Task<bool> OnUpdate(long secondsSinceLastRun)
{ {
if (timeSinceLastRun > Math.Max(_insuranceConfig.RunIntervalSeconds, 1)) if (_timeUtil.GetTimeStamp() <= _lastRunOnUpdateTimestamp + _insuranceConfig.RunIntervalSeconds)
{ {
_insuranceController.ProcessReturn(); return Task.FromResult(false);
} }
return Task.CompletedTask; _insuranceController.ProcessReturn();
// Store last completion time for later use
_lastRunOnUpdateTimestamp = _timeUtil.GetTimeStamp();
return Task.FromResult(true);
} }
/// <summary> /// <summary>
@@ -32,12 +32,12 @@ public class RagfairCallbacks(
return Task.CompletedTask; return Task.CompletedTask;
} }
public Task OnUpdate(long secondsSinceLastRun) public Task<bool> OnUpdate(long secondsSinceLastRun)
{ {
if (_timeUtil.GetTimeStamp() <= _lastRunOnUpdateTimestamp + _ragfairConfig.RunIntervalSeconds) if (_timeUtil.GetTimeStamp() <= _lastRunOnUpdateTimestamp + _ragfairConfig.RunIntervalSeconds)
{ {
// Not enough time has passed since last run, exit early // Not enough time has passed since last run, exit early
return Task.CompletedTask; return Task.FromResult(false);
} }
// There is a flag inside this class that only makes it run once. // There is a flag inside this class that only makes it run once.
@@ -52,7 +52,7 @@ public class RagfairCallbacks(
// Store last completion time for later use // Store last completion time for later use
_lastRunOnUpdateTimestamp = _timeUtil.GetTimeStamp(); _lastRunOnUpdateTimestamp = _timeUtil.GetTimeStamp();
return Task.CompletedTask; return Task.FromResult(true);
} }
/// <summary> /// <summary>
@@ -3,6 +3,7 @@ using SPTarkov.Server.Core.DI;
using SPTarkov.Server.Core.Models.Spt.Config; using SPTarkov.Server.Core.Models.Spt.Config;
using SPTarkov.Server.Core.Servers; using SPTarkov.Server.Core.Servers;
using SPTarkov.Server.Core.Services; using SPTarkov.Server.Core.Services;
using SPTarkov.Server.Core.Utils;
namespace SPTarkov.Server.Core.Callbacks; namespace SPTarkov.Server.Core.Callbacks;
@@ -10,11 +11,13 @@ namespace SPTarkov.Server.Core.Callbacks;
public class SaveCallbacks( public class SaveCallbacks(
SaveServer _saveServer, SaveServer _saveServer,
ConfigServer _configServer, ConfigServer _configServer,
BackupService _backupService BackupService _backupService,
TimeUtil _timeUtil
) )
: IOnLoad, IOnUpdate : IOnLoad, IOnUpdate
{ {
private readonly CoreConfig _coreConfig = _configServer.GetConfig<CoreConfig>(); private readonly CoreConfig _coreConfig = _configServer.GetConfig<CoreConfig>();
private long _lastRunOnUpdateTimestamp = long.MaxValue;
public async Task OnLoad() public async Task OnLoad()
{ {
@@ -22,13 +25,19 @@ public class SaveCallbacks(
_saveServer.Load(); _saveServer.Load();
} }
public Task OnUpdate(long timeSinceLastRun) public Task<bool> OnUpdate(long secondsSinceLastRun)
{ {
if (timeSinceLastRun > _coreConfig.ProfileSaveIntervalInSeconds) if (_timeUtil.GetTimeStamp() <= _lastRunOnUpdateTimestamp + _coreConfig.ProfileSaveIntervalInSeconds)
{ {
_saveServer.Save(); // Not enough time has passed since last run, exit early
return Task.FromResult(false);
} }
return Task.CompletedTask; _saveServer.Save();
// Store last completion time for later use
_lastRunOnUpdateTimestamp = _timeUtil.GetTimeStamp();
return Task.FromResult(false);
} }
} }
@@ -23,19 +23,16 @@ public class TraderCallbacks(
return Task.CompletedTask; return Task.CompletedTask;
} }
public Task OnUpdate(long _) public Task<bool> OnUpdate(long _)
{ {
_traderController.Update(); _traderController.Update();
return Task.CompletedTask;
return Task.FromResult(true);
} }
/// <summary> /// <summary>
/// Handle client/trading/api/traderSettings /// Handle client/trading/api/traderSettings
/// </summary> /// </summary>
/// <param name="url"></param>
/// <param name="info"></param>
/// <param name="sessionID">Session/player id</param>
/// <returns></returns>
public ValueTask<string> GetTraderSettings(string url, EmptyRequestData _, string sessionID) public ValueTask<string> GetTraderSettings(string url, EmptyRequestData _, string sessionID)
{ {
return new ValueTask<string>(_httpResponseUtil.GetBody(_traderController.GetAllTraders(sessionID))); return new ValueTask<string>(_httpResponseUtil.GetBody(_traderController.GetAllTraders(sessionID)));
@@ -44,10 +41,6 @@ public class TraderCallbacks(
/// <summary> /// <summary>
/// Handle client/trading/api/getTrader /// Handle client/trading/api/getTrader
/// </summary> /// </summary>
/// <param name="url"></param>
/// <param name="info"></param>
/// <param name="sessionID">Session/player id</param>
/// <returns></returns>
public ValueTask<string> GetTrader(string url, EmptyRequestData _, string sessionID) public ValueTask<string> GetTrader(string url, EmptyRequestData _, string sessionID)
{ {
var traderID = url.Replace("/client/trading/api/getTrader/", ""); var traderID = url.Replace("/client/trading/api/getTrader/", "");
@@ -57,9 +50,6 @@ public class TraderCallbacks(
/// <summary> /// <summary>
/// Handle client/trading/api/getTraderAssort /// Handle client/trading/api/getTraderAssort
/// </summary> /// </summary>
/// <param name="url"></param>
/// <param name="info"></param>
/// <param name="sessionID">Session/player id</param>
/// <returns></returns> /// <returns></returns>
public ValueTask<string> GetAssort(string url, EmptyRequestData _, string sessionID) public ValueTask<string> GetAssort(string url, EmptyRequestData _, string sessionID)
{ {
@@ -2,5 +2,5 @@ namespace SPTarkov.Server.Core.DI;
public interface IOnUpdate public interface IOnUpdate
{ {
Task OnUpdate(long secondsSinceLastRun); Task<bool> OnUpdate(long secondsSinceLastRun);
} }