fix pair offline state
This commit is contained in:
@@ -137,7 +137,7 @@ public sealed partial class PairCoordinator
|
|||||||
_pendingCharacterData.TryRemove(user.UID, out _);
|
_pendingCharacterData.TryRemove(user.UID, out _);
|
||||||
if (registrationResult.Value.CharacterIdent is not null)
|
if (registrationResult.Value.CharacterIdent is not null)
|
||||||
{
|
{
|
||||||
_ = _handlerRegistry.DeregisterOfflinePair(registrationResult.Value);
|
_ = _handlerRegistry.DeregisterOfflinePair(registrationResult.Value, forceDisposal: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
_mediator.Publish(new ClearProfileUserDataMessage(user));
|
_mediator.Publish(new ClearProfileUserDataMessage(user));
|
||||||
|
|||||||
@@ -1363,6 +1363,7 @@ internal sealed class PairHandlerAdapter : DisposableMediatorSubscriberBase, IPa
|
|||||||
{
|
{
|
||||||
PlayerName = null;
|
PlayerName = null;
|
||||||
_cachedData = null;
|
_cachedData = null;
|
||||||
|
LastReceivedCharacterData = null;
|
||||||
_performanceMetricsCache.Clear(Ident);
|
_performanceMetricsCache.Clear(Ident);
|
||||||
Logger.LogDebug("Disposing {name} complete", name);
|
Logger.LogDebug("Disposing {name} complete", name);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -136,6 +136,7 @@ public sealed class PairHandlerRegistry : IDisposable
|
|||||||
if (TryFinalizeHandlerRemoval(handler))
|
if (TryFinalizeHandlerRemoval(handler))
|
||||||
{
|
{
|
||||||
handler.Dispose();
|
handler.Dispose();
|
||||||
|
_pairStateCache.Clear(registration.CharacterIdent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (shouldScheduleRemoval && handler is not null)
|
else if (shouldScheduleRemoval && handler is not null)
|
||||||
@@ -356,6 +357,7 @@ public sealed class PairHandlerRegistry : IDisposable
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
_pairPerformanceMetricsCache.Clear(handler.Ident);
|
_pairPerformanceMetricsCache.Clear(handler.Ident);
|
||||||
|
_pairStateCache.Clear(handler.Ident);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -377,6 +379,7 @@ public sealed class PairHandlerRegistry : IDisposable
|
|||||||
{
|
{
|
||||||
handler.Dispose();
|
handler.Dispose();
|
||||||
_pairPerformanceMetricsCache.Clear(handler.Ident);
|
_pairPerformanceMetricsCache.Clear(handler.Ident);
|
||||||
|
_pairStateCache.Clear(handler.Ident);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -401,6 +404,7 @@ public sealed class PairHandlerRegistry : IDisposable
|
|||||||
if (TryFinalizeHandlerRemoval(handler))
|
if (TryFinalizeHandlerRemoval(handler))
|
||||||
{
|
{
|
||||||
handler.Dispose();
|
handler.Dispose();
|
||||||
|
_pairStateCache.Clear(handler.Ident);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -160,8 +160,9 @@ public sealed class PairManager
|
|||||||
return PairOperationResult<PairRegistration>.Fail($"Pair {user.UID} not found.");
|
return PairOperationResult<PairRegistration>.Fail($"Pair {user.UID} not found.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var ident = connection.Ident;
|
||||||
connection.SetOffline();
|
connection.SetOffline();
|
||||||
return PairOperationResult<PairRegistration>.Ok(new PairRegistration(new PairUniqueIdentifier(user.UID), connection.Ident));
|
return PairOperationResult<PairRegistration>.Ok(new PairRegistration(new PairUniqueIdentifier(user.UID), ident));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -530,6 +531,7 @@ public sealed class PairManager
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var ident = connection.Ident;
|
||||||
if (connection.IsOnline)
|
if (connection.IsOnline)
|
||||||
{
|
{
|
||||||
connection.SetOffline();
|
connection.SetOffline();
|
||||||
@@ -542,7 +544,7 @@ public sealed class PairManager
|
|||||||
shell.Users.Remove(userId);
|
shell.Users.Remove(userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new PairRegistration(new PairUniqueIdentifier(userId), connection.Ident);
|
return new PairRegistration(new PairUniqueIdentifier(userId), ident);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PairConnection CreateFromFullData(UserFullPairDto dto)
|
public static PairConnection CreateFromFullData(UserFullPairDto dto)
|
||||||
|
|||||||
@@ -76,6 +76,7 @@ public sealed class PairConnection
|
|||||||
public void SetOffline()
|
public void SetOffline()
|
||||||
{
|
{
|
||||||
IsOnline = false;
|
IsOnline = false;
|
||||||
|
Ident = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdatePermissions(UserPermissions own, UserPermissions other)
|
public void UpdatePermissions(UserPermissions own, UserPermissions other)
|
||||||
|
|||||||
Reference in New Issue
Block a user