Example #1
0
        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);
            }
        }
Example #2
0
        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"));
        }
Example #3
0
        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));
        }
Example #4
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));
        }
Example #5
0
 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));
 }
Example #6
0
 public static IObservable <TMessage> AsObservable <TMessage>(this IBufferedSubscriber <TMessage> subscriber, params MessageHandlerFilter <TMessage>[] filters)
 {
     return(new ObservableBufferedSubscriber <TMessage>(subscriber, filters));
 }
Example #7
0
 public static IDisposable Subscribe <TMessage>(this IBufferedSubscriber <TMessage> subscriber, Action <TMessage> handler, params MessageHandlerFilter <TMessage>[] filters)
 {
     return(subscriber.Subscribe(new AnonymousMessageHandler <TMessage>(handler), filters));
 }
Example #8
0
 public ObservableBufferedSubscriber(IBufferedSubscriber <TMessage> subscriber, MessageHandlerFilter <TMessage>[] filters)
 {
     this.subscriber = subscriber;
     this.filters    = filters;
 }
Example #9
0
 static IDisposable Ret(IBufferedSubscriber <int> subscriber)
 {
     return(subscriber.Subscribe(_ => Console.WriteLine("OK RETURN")));
 }