public void Subscribe(ISignalObserver <R> observer) { var subject = default(IObservableSubject <T>); var observable = default(IObservableSource <R>); try { subject = RequireNonNullRef(subjectFactory(), "The subjectFactory returned a null IObservableSubject"); observable = RequireNonNullRef(handler(subject), "The handler returned a null IObservableSource"); } catch (Exception ex) { DisposableHelper.Error(observer, ex); return; } var parent = new MulticastObserver(observer, subject); observer.OnSubscribe(parent); observable.Subscribe(parent); source.Subscribe(parent.mainObserver); }
public void Subscribe(ISignalObserver <R> observer) { var connectable = default(IConnectableObservableSource <U>); var observable = default(IObservableSource <R>); try { connectable = RequireNonNullRef(connectableSelector(source), "The subjectFactory returned a null IConnectableObservableSource"); observable = RequireNonNullRef(handler(connectable), "The handler returned a null IObservableSource"); } catch (Exception ex) { DisposableHelper.Error(observer, ex); return; } var parent = new MulticastObserver(observer); observer.OnSubscribe(parent); observable.Subscribe(parent); connectable.Connect(d => parent.SetConnection(d)); }
public MainObserver(MulticastObserver parent, IObservableSubject <T> subject) { this.parent = parent; this.subject = subject; }