コード例 #1
0
        public override void Subscribe(IFlowableSubscriber <R> subscriber)
        {
            var s      = sources;
            var n      = s.Length;
            var parent = new ZipSubscription(subscriber, zipper, n, prefetch);

            subscriber.OnSubscribe(parent);
            parent.Subscribe(s);
        }
コード例 #2
0
        public void Subscribe(ISubscriber <R> s)
        {
            int n;

            IPublisher <T>[] a;

            if (!MultiSourceHelper.ToArray(sources, sourcesEnumerable, s, out n, out a))
            {
                return;
            }

            if (n == 0)
            {
                EmptySubscription <R> .Complete(s);

                return;
            }
            else
            if (n == 1)
            {
                new PublisherMap <T, R>(a[0], v => zipper(new T[] { v })).Subscribe(s);
                return;
            }

            if (s is IConditionalSubscriber <R> )
            {
                var parent = new ZipConditionalSubscription((IConditionalSubscriber <R>)s, n, zipper, prefetch, delayErrors);

                s.OnSubscribe(parent);

                parent.Subscribe(a, n);
            }
            else
            {
                var parent = new ZipSubscription(s, n, zipper, prefetch, delayErrors);

                s.OnSubscribe(parent);

                parent.Subscribe(a, n);
            }
        }
コード例 #3
0
 internal ZipSubscriber(ZipSubscription parent, int prefetch)
 {
     this.parent   = parent;
     this.prefetch = prefetch;
     this.limit    = prefetch - (prefetch >> 2);
 }