public static ValueTask <IDisposable> SubscribeAsync <TMessage>(this IBufferedAsyncSubscriber <TMessage> subscriber, Func <TMessage, CancellationToken, ValueTask> handler, Func <TMessage, bool> predicate, AsyncMessageHandlerFilter <TMessage>[] filters, CancellationToken cancellationToken = default) { var predicateFilter = new AsyncPredicateFilter <TMessage>(predicate); filters = (filters.Length == 0) ? new[] { predicateFilter } : ArrayUtil.ImmutableAdd(filters, predicateFilter); return(subscriber.SubscribeAsync(new AnonymousAsyncMessageHandler <TMessage>(handler), filters, cancellationToken)); }
public static async ValueTask <TMessage> FirstAsync <TMessage>(this IBufferedAsyncSubscriber <TMessage> subscriber, CancellationToken cancellationToken, Func <TMessage, bool> predicate, params AsyncMessageHandlerFilter <TMessage>[] filters) { var predicateFilter = new AsyncPredicateFilter <TMessage>(predicate); filters = (filters.Length == 0) ? new[] { predicateFilter } : ArrayUtil.ImmutableAdd(filters, predicateFilter); return(await new ValueTask <TMessage>(await FirstAsyncAsyncBufferedMessageHandler <TMessage> .CreateAsync(subscriber, cancellationToken, filters), 0)); }
public static async ValueTask <TMessage> FirstAsync <TMessage>(this IBufferedAsyncSubscriber <TMessage> subscriber, CancellationToken cancellationToken, params AsyncMessageHandlerFilter <TMessage>[] filters) { return(await new ValueTask <TMessage>(await FirstAsyncAsyncBufferedMessageHandler <TMessage> .CreateAsync(subscriber, cancellationToken, filters), 0)); }
public BufferedAsyncEnumerableAsyncSubscriber(IBufferedAsyncSubscriber <TMessage> subscriber, AsyncMessageHandlerFilter <TMessage>[] filters) { this.subscriber = subscriber; this.filters = filters; }
public static IAsyncEnumerable <TMessage> AsAsyncEnumerable <TMessage>(this IBufferedAsyncSubscriber <TMessage> subscriber, params AsyncMessageHandlerFilter <TMessage>[] filters) { return(new BufferedAsyncEnumerableAsyncSubscriber <TMessage>(subscriber, filters)); }
public static ValueTask <IDisposable> SubscribeAsync <TMessage>(this IBufferedAsyncSubscriber <TMessage> subscriber, Func <TMessage, CancellationToken, ValueTask> handler, Func <TMessage, bool> predicate, CancellationToken cancellationToken = default) { return(SubscribeAsync(subscriber, handler, predicate, Array.Empty <AsyncMessageHandlerFilter <TMessage> >(), cancellationToken)); }
public static ValueTask <IDisposable> SubscribeAsync <TMessage>(this IBufferedAsyncSubscriber <TMessage> subscriber, Func <TMessage, CancellationToken, ValueTask> handler, AsyncMessageHandlerFilter <TMessage>[] filters, CancellationToken cancellationToken = default) { return(subscriber.SubscribeAsync(new AnonymousAsyncMessageHandler <TMessage>(handler), filters, cancellationToken)); }