// Copyright (c) Duende Software. All rights reserved.
// See LICENSE in the project root for license information.
using Xunit.Sdk;
using Xunit.v3;
namespace Duende.Xunit.Playwright.Retries;
///
/// Used to capture messages to potentially be forwarded later. Messages are forwarded by
/// disposing of the message bus.
///
internal sealed class DelayedMessageBus(IMessageBus innerBus) : IMessageBus
{
private readonly List _messages = [];
public bool QueueMessage(IMessageSinkMessage message)
{
lock (_messages)
{
_messages.Add(message);
}
// No way to ask the inner bus if they want to cancel without sending them the message, so
// we just go ahead and continue always.
return true;
}
public void Dispose()
{
foreach (var message in _messages)
{
_ = innerBus.QueueMessage(message);
}
}
}