コード例 #1
0
        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);
        }
コード例 #2
0
        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));
        }
コード例 #3
0
 public MainObserver(MulticastObserver parent, IObservableSubject <T> subject)
 {
     this.parent  = parent;
     this.subject = subject;
 }