예제 #1
0
            public _(GroupJoin <TLeft, TRight, TLeftDuration, TRightDuration, TResult> parent, IObserver <TResult> observer, IDisposable cancel)
                : base(observer, cancel)
            {
                _refCount = new RefCountDisposable(_group);
                _leftMap  = new SortedDictionary <int, IObserver <TRight> >();
                _rightMap = new SortedDictionary <int, TRight>();

                _leftDurationSelector  = parent._leftDurationSelector;
                _rightDurationSelector = parent._rightDurationSelector;
                _resultSelector        = parent._resultSelector;
            }
예제 #2
0
            public void Run(GroupJoin <TLeft, TRight, TLeftDuration, TRightDuration, TResult> parent)
            {
                var leftObserver = new LeftObserver(this);

                _group.Add(leftObserver);

                var rightObserver = new RightObserver(this);

                _group.Add(rightObserver);

                leftObserver.SetResource(parent._left.SubscribeSafe(leftObserver));
                rightObserver.SetResource(parent._right.SubscribeSafe(rightObserver));

                SetUpstream(_refCount);
            }
예제 #3
0
            public IDisposable Run(GroupJoin <TLeft, TRight, TLeftDuration, TRightDuration, TResult> parent)
            {
                var leftSubscription = new SingleAssignmentDisposable();

                _group.Add(leftSubscription);
                _leftID = 0;

                var rightSubscription = new SingleAssignmentDisposable();

                _group.Add(rightSubscription);
                _rightID = 0;

                leftSubscription.Disposable  = parent._left.SubscribeSafe(new LeftObserver(this, leftSubscription));
                rightSubscription.Disposable = parent._right.SubscribeSafe(new RightObserver(this, rightSubscription));

                return(_refCount);
            }
예제 #4
0
 public _(GroupJoin <TLeft, TRight, TLeftDuration, TRightDuration, TResult> parent, IObserver <TResult> observer, IDisposable cancel)
     : base(observer, cancel)
 {
     _parent = parent;
 }