コード例 #1
0
        public void Subscribe(ISubscriber <T> s)
        {
            if (s is IConditionalSubscriber <T> )
            {
                ConcatConditionalSubscriber parent = new ConcatConditionalSubscriber((IConditionalSubscriber <T>)s, sources, delayError);
                s.OnSubscribe(parent);

                parent.Drain();
            }
            else
            {
                ConcatSubscriber parent = new ConcatSubscriber(s, sources, delayError);
                s.OnSubscribe(parent);

                parent.Drain();
            }
        }
コード例 #2
0
        public void Subscribe(ISubscriber <T> s)
        {
            IEnumerator <IPublisher <T> > enumerator;

            bool hasValue;

            try
            {
                enumerator = sources.GetEnumerator();

                hasValue = enumerator.MoveNext();
            }
            catch (Exception ex)
            {
                ExceptionHelper.ThrowIfFatal(ex);
                EmptySubscription <T> .Error(s, ex);

                return;
            }

            if (!hasValue)
            {
                EmptySubscription <T> .Complete(s);

                return;
            }

            if (s is IConditionalSubscriber <T> )
            {
                ConcatConditionalSubscriber parent = new ConcatConditionalSubscriber((IConditionalSubscriber <T>)s, enumerator, delayError);
                s.OnSubscribe(parent);

                parent.Drain();
            }
            else
            {
                ConcatSubscriber parent = new ConcatSubscriber(s, enumerator, delayError);
                s.OnSubscribe(parent);

                parent.Drain();
            }
        }