66 lines
1.6 KiB
C#
Raw Normal View History

2025-05-02 08:21:56 +02:00
namespace AutoClient.Modes.FolderStore
{
public class SlowModeHandler : IFileSaverResultHandler
{
private readonly App app;
private int failureCount = 0;
2025-06-20 10:39:01 +02:00
private bool slowMode = true;
2025-05-02 08:21:56 +02:00
private int recoveryCount = 0;
2025-06-09 09:56:38 +02:00
private readonly object _lock = new object();
2025-05-02 08:21:56 +02:00
public SlowModeHandler(App app)
{
this.app = app;
}
public void OnSuccess()
{
failureCount = 0;
if (slowMode)
{
recoveryCount++;
2025-06-09 09:56:38 +02:00
Log("Recovering from slow mode: " + recoveryCount);
if (recoveryCount > 3)
2025-05-02 08:21:56 +02:00
{
Log("Recovery limit reached. Exiting slow mode.");
slowMode = false;
failureCount = 0;
}
}
Check();
2025-05-02 08:21:56 +02:00
}
public void OnFailure()
{
failureCount++;
2025-06-09 09:56:38 +02:00
Log("Failing towards slow mode: " + failureCount);
if (failureCount > 3 && !slowMode)
2025-05-02 08:21:56 +02:00
{
Log("Failure limit reached. Entering slow mode.");
slowMode = true;
recoveryCount = 0;
}
Check();
2025-05-02 08:21:56 +02:00
}
private void Check()
2025-05-02 08:21:56 +02:00
{
if (slowMode)
{
2025-06-09 09:56:38 +02:00
lock (_lock)
{
if (!slowMode) return;
Thread.Sleep(TimeSpan.FromMinutes(app.Config.SlowModeDelayMinutes));
}
2025-05-02 08:21:56 +02:00
}
}
private void Log(string msg)
{
app.Log.Log(msg);
}
}
}