public AmbDecisionObserver(AmbOuterObserver parent, AmbState me, IDisposable otherSubscription, Amb self) { this.parent = parent; this.me = me; this.otherSubscription = otherSubscription; this.self = self; }
public IDisposable Run() { leftSubscription = new SingleAssignmentDisposable(); rightSubscription = new SingleAssignmentDisposable(); ICancelable cancelable = StableCompositeDisposable.Create(leftSubscription, rightSubscription); Amb amb = new Amb(); amb.targetDisposable = cancelable; amb.targetObserver = new AmbDecisionObserver(this, AmbState.Left, rightSubscription, amb); Amb amb2 = new Amb(); amb2.targetDisposable = cancelable; amb2.targetObserver = new AmbDecisionObserver(this, AmbState.Right, leftSubscription, amb2); leftSubscription.Disposable = parent.source.Subscribe(amb); rightSubscription.Disposable = parent.second.Subscribe(amb2); return(cancelable); }
public IDisposable Run() { leftSubscription = new SingleAssignmentDisposable(); rightSubscription = new SingleAssignmentDisposable(); var d = StableCompositeDisposable.Create(leftSubscription, rightSubscription); var left = new Amb(); left.targetDisposable = d; left.targetObserver = new AmbDecisionObserver(this, AmbState.Left, rightSubscription, left); var right = new Amb(); right.targetDisposable = d; right.targetObserver = new AmbDecisionObserver(this, AmbState.Right, leftSubscription, right); leftSubscription.Disposable = parent.source.Subscribe(left); rightSubscription.Disposable = parent.second.Subscribe(right); return(d); }