updated layout and adjusted scanning

This commit is contained in:
2025-09-25 06:06:19 +09:00
parent 7569b15993
commit e8f8512cdd
4 changed files with 148 additions and 111 deletions

View File

@@ -28,11 +28,14 @@ public class BroadcastScannerService : DisposableMediatorSubscriberBase, IDispos
private readonly CancellationTokenSource _cleanupCts = new();
private Task? _cleanupTask;
private int _checkEveryFrames = 20;
private int _frameCounter = 0;
private int _lookupsThisFrame = 0;
private const int MaxLookupsPerFrame = 15;
private const int MaxLookupsPerFrame = 30;
private const int MaxQueueSize = 100;
private volatile bool _batchRunning = false;
public IReadOnlyDictionary<string, BroadcastEntry> BroadcastCache => _broadcastCache;
public readonly record struct BroadcastEntry(bool IsBroadcasting, DateTime ExpiryTime, string? GID);
@@ -85,7 +88,7 @@ public class BroadcastScannerService : DisposableMediatorSubscriberBase, IDispos
_lookupQueue.Enqueue(cid);
}
if (_frameCounter % 2 == 0 && _lookupQueue.Count > 0)
if (_frameCounter % _checkEveryFrames == 0 && _lookupQueue.Count > 0)
{
var cidsToLookup = new List<string>();
while (_lookupQueue.Count > 0 && _lookupsThisFrame < MaxLookupsPerFrame)
@@ -96,8 +99,11 @@ public class BroadcastScannerService : DisposableMediatorSubscriberBase, IDispos
_lookupsThisFrame++;
}
if (cidsToLookup.Count > 0)
_ = BatchUpdateBroadcastCacheAsync(cidsToLookup);
if (cidsToLookup.Count > 0 && !_batchRunning)
{
_batchRunning = true;
_ = BatchUpdateBroadcastCacheAsync(cidsToLookup).ContinueWith(_ => _batchRunning = false);
}
}
}