don't check for updated token during zoning
This commit is contained in:
@@ -673,7 +673,7 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber
|
|||||||
_lastZone = zone;
|
_lastZone = zone;
|
||||||
if (!_sentBetweenAreas)
|
if (!_sentBetweenAreas)
|
||||||
{
|
{
|
||||||
_logger.LogDebug("Zone switch/Gpose start");
|
_logger.LogDebug("Zone switch start");
|
||||||
_sentBetweenAreas = true;
|
_sentBetweenAreas = true;
|
||||||
Mediator.Publish(new ZoneSwitchStartMessage());
|
Mediator.Publish(new ZoneSwitchStartMessage());
|
||||||
Mediator.Publish(new HaltScanMessage(nameof(ConditionFlag.BetweenAreas)));
|
Mediator.Publish(new HaltScanMessage(nameof(ConditionFlag.BetweenAreas)));
|
||||||
@@ -685,7 +685,7 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber
|
|||||||
|
|
||||||
if (_sentBetweenAreas)
|
if (_sentBetweenAreas)
|
||||||
{
|
{
|
||||||
_logger.LogDebug("Zone switch/Gpose end");
|
_logger.LogDebug("Zone switch end");
|
||||||
_sentBetweenAreas = false;
|
_sentBetweenAreas = false;
|
||||||
Mediator.Publish(new ZoneSwitchEndMessage());
|
Mediator.Publish(new ZoneSwitchEndMessage());
|
||||||
Mediator.Publish(new ResumeScanMessage(nameof(ConditionFlag.BetweenAreas)));
|
Mediator.Publish(new ResumeScanMessage(nameof(ConditionFlag.BetweenAreas)));
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IM
|
|||||||
private HubConnection? _mareHub;
|
private HubConnection? _mareHub;
|
||||||
private ServerState _serverState;
|
private ServerState _serverState;
|
||||||
private CensusUpdateMessage? _lastCensus;
|
private CensusUpdateMessage? _lastCensus;
|
||||||
|
private readonly SemaphoreSlim _zoneSwitchSemaphore = new(1, 1);
|
||||||
|
|
||||||
public ApiController(ILogger<ApiController> logger, HubFactory hubFactory, DalamudUtilService dalamudUtil,
|
public ApiController(ILogger<ApiController> logger, HubFactory hubFactory, DalamudUtilService dalamudUtil,
|
||||||
PairManager pairManager, ServerConfigurationManager serverManager, MareMediator mediator,
|
PairManager pairManager, ServerConfigurationManager serverManager, MareMediator mediator,
|
||||||
@@ -60,6 +61,8 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IM
|
|||||||
Mediator.Subscribe<CyclePauseMessage>(this, (msg) => _ = CyclePauseAsync(msg.UserData));
|
Mediator.Subscribe<CyclePauseMessage>(this, (msg) => _ = CyclePauseAsync(msg.UserData));
|
||||||
Mediator.Subscribe<CensusUpdateMessage>(this, (msg) => _lastCensus = msg);
|
Mediator.Subscribe<CensusUpdateMessage>(this, (msg) => _lastCensus = msg);
|
||||||
Mediator.Subscribe<PauseMessage>(this, (msg) => _ = PauseAsync(msg.UserData));
|
Mediator.Subscribe<PauseMessage>(this, (msg) => _ = PauseAsync(msg.UserData));
|
||||||
|
Mediator.Subscribe<ZoneSwitchStartMessage>(this, (msg) => _zoneSwitchSemaphore.Wait());
|
||||||
|
Mediator.Subscribe<ZoneSwitchEndMessage>(this, (msg) => _zoneSwitchSemaphore.Release());
|
||||||
|
|
||||||
ServerState = ServerState.Offline;
|
ServerState = ServerState.Offline;
|
||||||
|
|
||||||
@@ -363,6 +366,7 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IM
|
|||||||
|
|
||||||
_healthCheckTokenSource?.Cancel();
|
_healthCheckTokenSource?.Cancel();
|
||||||
_ = Task.Run(async () => await StopConnectionAsync(ServerState.Disconnected).ConfigureAwait(false));
|
_ = Task.Run(async () => await StopConnectionAsync(ServerState.Disconnected).ConfigureAwait(false));
|
||||||
|
_zoneSwitchSemaphore.Dispose();
|
||||||
_connectionCancellationTokenSource?.Cancel();
|
_connectionCancellationTokenSource?.Cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -532,6 +536,13 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IM
|
|||||||
|
|
||||||
private async Task<bool> RefreshTokenAsync(CancellationToken ct)
|
private async Task<bool> RefreshTokenAsync(CancellationToken ct)
|
||||||
{
|
{
|
||||||
|
int zoneSwitchWaitAttempts = 0;
|
||||||
|
while (_zoneSwitchSemaphore.CurrentCount == 0 && zoneSwitchWaitAttempts <= 15)
|
||||||
|
{
|
||||||
|
Logger.LogTrace("Refresh Token - Waiting for Zone Switch Semaphore, attempt {attempt}", zoneSwitchWaitAttempts++);
|
||||||
|
await Task.Delay(TimeSpan.FromSeconds(1), ct).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
|
||||||
Logger.LogDebug("Checking token");
|
Logger.LogDebug("Checking token");
|
||||||
|
|
||||||
bool requireReconnect = false;
|
bool requireReconnect = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user