// Copyright (c) 2025-2026 GeWuYou
// SPDX-License-Identifier: Apache-2.0
using GFramework.Cqrs.Abstractions.Cqrs;
namespace GFramework.Cqrs.Tests.Cqrs;
///
/// 供 generated stream invoker provider 测试使用的流式请求处理器。
///
internal sealed class GeneratedStreamInvokerRequestHandler : IStreamRequestHandler
{
///
/// 返回带有运行时处理器语义的异步流,便于和 generated invoker 自定义结果区分。
///
/// 当前测试流式请求。
/// 取消令牌。
/// 运行时处理器生成的异步流结果。
public IAsyncEnumerable Handle(GeneratedStreamInvokerRequest request, CancellationToken cancellationToken)
{
ArgumentNullException.ThrowIfNull(request);
return StreamResultsAsync(request.Start, cancellationToken);
}
///
/// 生成用于区分 runtime 路径的固定异步流结果。
///
private static async IAsyncEnumerable StreamResultsAsync(
int start,
[EnumeratorCancellation] CancellationToken cancellationToken)
{
yield return start;
await Task.Yield();
cancellationToken.ThrowIfCancellationRequested();
yield return start + 1;
}
}