fix data pushes to 0 players
This commit is contained in:
@@ -36,13 +36,13 @@ public class VisibleUserDataDistributor : DisposableMediatorSubscriberBase
|
|||||||
var newData = msg.CharacterData;
|
var newData = msg.CharacterData;
|
||||||
if (_lastCreatedData == null || (!string.Equals(newData.DataHash.Value, _lastCreatedData.DataHash.Value, StringComparison.Ordinal)))
|
if (_lastCreatedData == null || (!string.Equals(newData.DataHash.Value, _lastCreatedData.DataHash.Value, StringComparison.Ordinal)))
|
||||||
{
|
{
|
||||||
Logger.LogDebug("Pushing data for visible players");
|
|
||||||
_lastCreatedData = newData;
|
_lastCreatedData = newData;
|
||||||
|
Logger.LogTrace("Storing new data hash {hash}", newData.DataHash.Value);
|
||||||
PushToAllVisibleUsers(forced: true);
|
PushToAllVisibleUsers(forced: true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Logger.LogDebug("Not sending data for {hash}", newData.DataHash.Value);
|
Logger.LogTrace("Data hash {hash} equal to stored data", newData.DataHash.Value);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -67,8 +67,13 @@ public class VisibleUserDataDistributor : DisposableMediatorSubscriberBase
|
|||||||
{
|
{
|
||||||
_usersToPushDataTo.Add(user);
|
_usersToPushDataTo.Add(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_usersToPushDataTo.Count > 0)
|
||||||
|
{
|
||||||
|
Logger.LogDebug("Pushing data {hash} for {count} visible players", _lastCreatedData?.DataHash.Value ?? "UNKNOWN", _usersToPushDataTo.Count);
|
||||||
PushCharacterData(forced);
|
PushCharacterData(forced);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void FrameworkOnUpdate()
|
private void FrameworkOnUpdate()
|
||||||
{
|
{
|
||||||
@@ -80,7 +85,9 @@ public class VisibleUserDataDistributor : DisposableMediatorSubscriberBase
|
|||||||
_previouslyVisiblePlayers.AddRange(allVisibleUsers);
|
_previouslyVisiblePlayers.AddRange(allVisibleUsers);
|
||||||
if (newVisibleUsers.Count == 0) return;
|
if (newVisibleUsers.Count == 0) return;
|
||||||
|
|
||||||
Logger.LogTrace("Has new visible players, pushing character data to {users}", string.Join(", ", newVisibleUsers.Select(k => k.AliasOrUID)));
|
Logger.LogDebug("Scheduling character data push of {data} to {users}",
|
||||||
|
_lastCreatedData?.DataHash.Value ?? string.Empty,
|
||||||
|
string.Join(", ", newVisibleUsers.Select(k => k.AliasOrUID)));
|
||||||
foreach (var user in newVisibleUsers)
|
foreach (var user in newVisibleUsers)
|
||||||
{
|
{
|
||||||
_usersToPushDataTo.Add(user);
|
_usersToPushDataTo.Add(user);
|
||||||
@@ -90,7 +97,7 @@ public class VisibleUserDataDistributor : DisposableMediatorSubscriberBase
|
|||||||
|
|
||||||
private void PushCharacterData(bool forced = false)
|
private void PushCharacterData(bool forced = false)
|
||||||
{
|
{
|
||||||
if (_lastCreatedData == null) return;
|
if (_lastCreatedData == null || _usersToPushDataTo.Count == 0) return;
|
||||||
|
|
||||||
_ = Task.Run(async () =>
|
_ = Task.Run(async () =>
|
||||||
{
|
{
|
||||||
@@ -110,7 +117,7 @@ public class VisibleUserDataDistributor : DisposableMediatorSubscriberBase
|
|||||||
await _pushDataSemaphore.WaitAsync(_runtimeCts.Token).ConfigureAwait(false);
|
await _pushDataSemaphore.WaitAsync(_runtimeCts.Token).ConfigureAwait(false);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (!_usersToPushDataTo.Any()) return;
|
if (_usersToPushDataTo.Count == 0) return;
|
||||||
Logger.LogDebug("Pushing {data} to {users}", dataToSend.DataHash, string.Join(", ", _usersToPushDataTo.Select(k => k.AliasOrUID)));
|
Logger.LogDebug("Pushing {data} to {users}", dataToSend.DataHash, string.Join(", ", _usersToPushDataTo.Select(k => k.AliasOrUID)));
|
||||||
await _apiController.PushCharacterData(dataToSend, [.. _usersToPushDataTo]).ConfigureAwait(false);
|
await _apiController.PushCharacterData(dataToSend, [.. _usersToPushDataTo]).ConfigureAwait(false);
|
||||||
_usersToPushDataTo.Clear();
|
_usersToPushDataTo.Clear();
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ public partial class ApiController
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Logger.LogDebug("Pushing Character data {hash} to {visible}", data.DataHash, string.Join(", ", visibleCharacters.Select(v => v.AliasOrUID)));
|
|
||||||
await PushCharacterDataInternal(data, [.. visibleCharacters]).ConfigureAwait(false);
|
await PushCharacterDataInternal(data, [.. visibleCharacters]).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
catch (OperationCanceledException)
|
catch (OperationCanceledException)
|
||||||
|
|||||||
Reference in New Issue
Block a user