This commit is contained in:
Boki 2026-02-26 20:45:24 -05:00
parent 53641fc8e7
commit 657d307485
28 changed files with 2045 additions and 161 deletions

View file

@ -19,22 +19,28 @@ public class TradeQueue
public int Length => _queue.Count;
public bool IsProcessing => _processing;
public void Clear()
{
_queue.Clear();
Log.Information("Trade queue cleared");
}
public event Action? TradeCompleted;
public event Action? TradeFailed;
public void Enqueue(TradeInfo trade)
{
var existingIds = _queue.SelectMany(t => t.ItemIds).ToHashSet();
var newIds = trade.ItemIds.Where(id => !existingIds.Contains(id)).ToList();
if (newIds.Count == 0)
var existingIds = _queue.SelectMany(t => t.Items.Select(i => i.Id)).ToHashSet();
var newItems = trade.Items.Where(i => !existingIds.Contains(i.Id)).ToList();
if (newItems.Count == 0)
{
Log.Information("Skipping duplicate trade: {ItemIds}", string.Join(",", trade.ItemIds));
Log.Information("Skipping duplicate trade: {ItemIds}", string.Join(",", trade.Items.Select(i => i.Id)));
return;
}
var deduped = trade with { ItemIds = newIds };
var deduped = trade with { Items = newItems };
_queue.Enqueue(deduped);
Log.Information("Trade enqueued: {Count} items, queue={QueueLen}", newIds.Count, _queue.Count);
Log.Information("Trade enqueued: {Count} items, queue={QueueLen}", newItems.Count, _queue.Count);
_ = ProcessNext();
}
@ -46,7 +52,7 @@ public class TradeQueue
var trade = _queue.Dequeue();
try
{
Log.Information("Processing trade: {SearchId} ({Count} items)", trade.SearchId, trade.ItemIds.Count);
Log.Information("Processing trade: {SearchId} ({Count} items)", trade.SearchId, trade.Items.Count);
var success = await _executor.ExecuteTrade(trade);
if (success)
{