fix data pushes to 0 players

This commit is contained in:
Stanley Dimant
2025-03-29 11:49:52 +01:00
parent ed604d9bd6
commit 45373fea20
2 changed files with 13 additions and 7 deletions

View File

@@ -36,13 +36,13 @@ public class VisibleUserDataDistributor : DisposableMediatorSubscriberBase
var newData = msg.CharacterData;
if (_lastCreatedData == null || (!string.Equals(newData.DataHash.Value, _lastCreatedData.DataHash.Value, StringComparison.Ordinal)))
{
Logger.LogDebug("Pushing data for visible players");
_lastCreatedData = newData;
Logger.LogTrace("Storing new data hash {hash}", newData.DataHash.Value);
PushToAllVisibleUsers(forced: true);
}
else
{
Logger.LogDebug("Not sending data for {hash}", newData.DataHash.Value);
Logger.LogTrace("Data hash {hash} equal to stored data", newData.DataHash.Value);
}
});
@@ -67,7 +67,12 @@ public class VisibleUserDataDistributor : DisposableMediatorSubscriberBase
{
_usersToPushDataTo.Add(user);
}
PushCharacterData(forced);
if (_usersToPushDataTo.Count > 0)
{
Logger.LogDebug("Pushing data {hash} for {count} visible players", _lastCreatedData?.DataHash.Value ?? "UNKNOWN", _usersToPushDataTo.Count);
PushCharacterData(forced);
}
}
private void FrameworkOnUpdate()
@@ -80,7 +85,9 @@ public class VisibleUserDataDistributor : DisposableMediatorSubscriberBase
_previouslyVisiblePlayers.AddRange(allVisibleUsers);
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)
{
_usersToPushDataTo.Add(user);
@@ -90,7 +97,7 @@ public class VisibleUserDataDistributor : DisposableMediatorSubscriberBase
private void PushCharacterData(bool forced = false)
{
if (_lastCreatedData == null) return;
if (_lastCreatedData == null || _usersToPushDataTo.Count == 0) return;
_ = Task.Run(async () =>
{
@@ -110,7 +117,7 @@ public class VisibleUserDataDistributor : DisposableMediatorSubscriberBase
await _pushDataSemaphore.WaitAsync(_runtimeCts.Token).ConfigureAwait(false);
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)));
await _apiController.PushCharacterData(dataToSend, [.. _usersToPushDataTo]).ConfigureAwait(false);
_usersToPushDataTo.Clear();

View File

@@ -16,7 +16,6 @@ public partial class ApiController
try
{
Logger.LogDebug("Pushing Character data {hash} to {visible}", data.DataHash, string.Join(", ", visibleCharacters.Select(v => v.AliasOrUID)));
await PushCharacterDataInternal(data, [.. visibleCharacters]).ConfigureAwait(false);
}
catch (OperationCanceledException)