// Copyright (c) 2025-2026 GeWuYou // SPDX-License-Identifier: Apache-2.0 using System.Threading; using GFramework.Cqrs.Abstractions.Cqrs; namespace GFramework.Cqrs.Tests.Cqrs; /// /// 记录 generated stream invoker 与 stream pipeline 行为组合时的命中次数。 /// internal sealed class GeneratedStreamPipelineTrackingBehavior : IStreamPipelineBehavior { private static int _invocationCount; /// /// 获取或重置当前测试进程中的行为触发次数。 /// public static int InvocationCount { get => Volatile.Read(ref _invocationCount); set => Volatile.Write(ref _invocationCount, value); } /// /// 记录一次行为执行,然后继续执行 generated stream invoker。 /// /// 当前流式请求消息。 /// 下一个处理阶段。 /// 取消令牌。 /// 下游处理阶段返回的异步流。 public IAsyncEnumerable Handle( GeneratedStreamInvokerRequest message, StreamMessageHandlerDelegate next, CancellationToken cancellationToken) { Interlocked.Increment(ref _invocationCount); return next(message, cancellationToken); } }