using System.Threading;
using GFramework.Core.Abstractions.Architectures;
namespace GFramework.Cqrs.Tests.Cqrs;
///
/// 记录 stream dispatch binding 缓存回归中每次分发实际使用的上下文与实例身份。
///
internal static class DispatcherStreamContextRefreshState
{
private static int _nextHandlerInstanceId;
///
/// 获取每次建流时记录的快照。
///
public static List HandlerSnapshots { get; } = [];
///
/// 为新的 handler 测试实例分配稳定编号。
///
public static int AllocateHandlerInstanceId()
{
return Interlocked.Increment(ref _nextHandlerInstanceId);
}
///
/// 记录 handler 在当前建流中观察到的上下文。
///
public static void Record(string dispatchId, int instanceId, IArchitectureContext context)
{
HandlerSnapshots.Add(new DispatcherPipelineContextSnapshot(dispatchId, instanceId, context));
}
///
/// 清空历史记录与实例编号,避免跨测试污染断言。
///
public static void Reset()
{
_nextHandlerInstanceId = 0;
HandlerSnapshots.Clear();
}
}