Fixed migration for 2.0.0

This commit is contained in:
cake
2025-11-29 17:51:31 +01:00
parent 35af9b065b
commit 0455a23c12
12 changed files with 597 additions and 759 deletions

View File

@@ -21,16 +21,16 @@ public class BroadcastScannerService : DisposableMediatorSubscriberBase
private readonly HashSet<string> _lookupQueuedCids = [];
private readonly HashSet<string> _syncshellCids = [];
private static readonly TimeSpan MaxAllowedTtl = TimeSpan.FromMinutes(4);
private static readonly TimeSpan RetryDelay = TimeSpan.FromMinutes(1);
private static readonly TimeSpan _maxAllowedTtl = TimeSpan.FromMinutes(4);
private static readonly TimeSpan _retryDelay = TimeSpan.FromMinutes(1);
private readonly CancellationTokenSource _cleanupCts = new();
private readonly Task? _cleanupTask;
private readonly int _checkEveryFrames = 20;
private int _frameCounter = 0;
private const int MaxLookupsPerFrame = 30;
private const int MaxQueueSize = 100;
private const int _maxLookupsPerFrame = 30;
private const int _maxQueueSize = 100;
private volatile bool _batchRunning = false;
@@ -38,11 +38,11 @@ public class BroadcastScannerService : DisposableMediatorSubscriberBase
public readonly record struct BroadcastEntry(bool IsBroadcasting, DateTime ExpiryTime, string? GID);
public BroadcastScannerService(ILogger<BroadcastScannerService> logger,
IObjectTable objectTable,
IFramework framework,
BroadcastService broadcastService,
LightlessMediator mediator,
NameplateHandler nameplateHandler) : base(logger, mediator)
NameplateHandler nameplateHandler,
ActorObjectService actorTracker) : base(logger, mediator)
{
_logger = logger;
_actorTracker = actorTracker;
@@ -57,6 +57,7 @@ public class BroadcastScannerService : DisposableMediatorSubscriberBase
_cleanupTask = Task.Run(ExpiredBroadcastCleanupLoop);
_nameplateHandler.Init();
_actorTracker = actorTracker;
}
private void OnFrameworkUpdate(IFramework framework) => Update();
@@ -79,14 +80,14 @@ public class BroadcastScannerService : DisposableMediatorSubscriberBase
var cid = DalamudUtilService.GetHashedCIDFromPlayerPointer(address);
var isStale = !_broadcastCache.TryGetValue(cid, out var entry) || entry.ExpiryTime <= now;
if (isStale && _lookupQueuedCids.Add(cid) && _lookupQueue.Count < MaxQueueSize)
if (isStale && _lookupQueuedCids.Add(cid) && _lookupQueue.Count < _maxQueueSize)
_lookupQueue.Enqueue(cid);
}
if (_frameCounter % _checkEveryFrames == 0 && _lookupQueue.Count > 0)
{
var cidsToLookup = new List<string>();
while (_lookupQueue.Count > 0 && lookupsThisFrame < MaxLookupsPerFrame)
while (_lookupQueue.Count > 0 && lookupsThisFrame < _maxLookupsPerFrame)
{
var cid = _lookupQueue.Dequeue();
_lookupQueuedCids.Remove(cid);
@@ -113,8 +114,8 @@ public class BroadcastScannerService : DisposableMediatorSubscriberBase
continue;
var ttl = info.IsBroadcasting && info.TTL.HasValue
? TimeSpan.FromTicks(Math.Min(info.TTL.Value.Ticks, MaxAllowedTtl.Ticks))
: RetryDelay;
? TimeSpan.FromTicks(Math.Min(info.TTL.Value.Ticks, _maxAllowedTtl.Ticks))
: _retryDelay;
var expiry = now + ttl;