public FirstAsyncBufferedMessageHandler(IBufferedSubscriber <TMessage> subscriber, CancellationToken cancellationToken, MessageHandlerFilter <TMessage>[] filters) { if (cancellationToken.IsCancellationRequested) { this.core.SetException(new OperationCanceledException(cancellationToken)); return; } try { this.subscription = subscriber.Subscribe(this, filters); } catch (Exception ex) { this.core.SetException(ex); return; } if (handleCalled != 0) { this.subscription?.Dispose(); return; } if (cancellationToken.CanBeCanceled) { this.cancellationToken = cancellationToken; this.cancellationTokenRegistration = cancellationToken.Register(cancelCallback, this, false); } }
static void BufferedSubscriber(IBufferedSubscriber <int> subscriber) { subscriber.Subscribe(_ => Console.WriteLine("NG NOT HANDLED")); var d = subscriber.Subscribe(_ => Console.WriteLine("OK ASSIGN")); IDisposable d1; d1 = subscriber.Subscribe(_ => Console.WriteLine("OK ASSIGN2")); _ = subscriber.Subscribe(_ => Console.WriteLine("OK ASSIGN3")); DisposableBag.Create(subscriber.Subscribe(_ => Console.WriteLine("OK METHOD ARG1"))); var bag = DisposableBag.CreateBuilder(); subscriber.Subscribe(_ => Console.WriteLine("OK METHOD CHAIN")).AddTo(bag); Enumerable.Range(1, 10).Select(_ => subscriber.Subscribe(_ => Console.WriteLine("OK IN LAMBDA"))); new MyClass(subscriber.Subscribe(_ => Console.WriteLine("OK CTOR"))); using (subscriber.Subscribe(_ => Console.WriteLine("OK USING"))) { } using (subscriber.Subscribe(_ => Console.WriteLine("OK USING2"))) { } using var u = subscriber.Subscribe(_ => Console.WriteLine("OK USING 3")); }
public static ValueTask <TMessage> FirstAsync <TMessage>(this IBufferedSubscriber <TMessage> subscriber, CancellationToken cancellationToken, Func <TMessage, bool> predicate, params MessageHandlerFilter <TMessage>[] filters) { var predicateFilter = new PredicateFilter <TMessage>(predicate); filters = (filters.Length == 0) ? new[] { predicateFilter } : ArrayUtil.ImmutableAdd(filters, predicateFilter); return(new ValueTask <TMessage>(new FirstAsyncBufferedMessageHandler <TMessage>(subscriber, cancellationToken, filters), 0)); }
public static IDisposable Subscribe <TMessage>(this IBufferedSubscriber <TMessage> subscriber, Action <TMessage> handler, Func <TMessage, bool> predicate, params MessageHandlerFilter <TMessage>[] filters) { var predicateFilter = new PredicateFilter <TMessage>(predicate); filters = (filters.Length == 0) ? new[] { predicateFilter } : ArrayUtil.ImmutableAdd(filters, predicateFilter); return(subscriber.Subscribe(new AnonymousMessageHandler <TMessage>(handler), filters)); }
public static ValueTask <TMessage> FirstAsync <TMessage>(this IBufferedSubscriber <TMessage> subscriber, CancellationToken cancellationToken, params MessageHandlerFilter <TMessage>[] filters) { return(new ValueTask <TMessage>(new FirstAsyncBufferedMessageHandler <TMessage>(subscriber, cancellationToken, filters), 0)); }
public static IObservable <TMessage> AsObservable <TMessage>(this IBufferedSubscriber <TMessage> subscriber, params MessageHandlerFilter <TMessage>[] filters) { return(new ObservableBufferedSubscriber <TMessage>(subscriber, filters)); }
public static IDisposable Subscribe <TMessage>(this IBufferedSubscriber <TMessage> subscriber, Action <TMessage> handler, params MessageHandlerFilter <TMessage>[] filters) { return(subscriber.Subscribe(new AnonymousMessageHandler <TMessage>(handler), filters)); }
public ObservableBufferedSubscriber(IBufferedSubscriber <TMessage> subscriber, MessageHandlerFilter <TMessage>[] filters) { this.subscriber = subscriber; this.filters = filters; }
static IDisposable Ret(IBufferedSubscriber <int> subscriber) { return(subscriber.Subscribe(_ => Console.WriteLine("OK RETURN"))); }