using System.Collections.Generic; using System.Runtime.CompilerServices; using System.Threading; using GFramework.Cqrs.Abstractions.Cqrs; using GFramework.Cqrs.Cqrs; namespace GFramework.Cqrs.Tests.Cqrs; /// /// 记录缓存 stream binding 复用场景下每次分发注入到 handler 的上下文与实例身份。 /// internal sealed class DispatcherStreamContextRefreshHandler : CqrsContextAwareHandlerBase, IStreamRequestHandler { private readonly int _instanceId = DispatcherStreamContextRefreshState.AllocateHandlerInstanceId(); /// /// 记录当前 handler 实例收到的上下文,并返回稳定元素。 /// /// 当前流请求。 /// 取消令牌。 /// 包含一个固定元素的异步流。 public async IAsyncEnumerable Handle( DispatcherStreamContextRefreshRequest request, [EnumeratorCancellation] CancellationToken cancellationToken) { DispatcherStreamContextRefreshState.Record(request.DispatchId, _instanceId, Context); yield return 11; await ValueTask.CompletedTask.ConfigureAwait(false); } }