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(); } }
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(); } }