public UniTask Execute(ILifeTime lifeTime) { //reset local value lifeTime.AddCleanUpAction(CleanUpNode); var input = _portPair.InputPort; var output = _portPair.OutputPort; var valueObservable = input.Receive <TData>(); var source = BindToDataSource(valueObservable); if (_distinctInput) { source.Subscribe(x => _valueData.Value = x).AddTo(lifeTime); } else { source.Subscribe(_valueData.SetValueForce).AddTo(lifeTime); } _isFinalyze.Where(x => x) .Do(x => output.Publish(_valueData.Value)) .Subscribe() .AddTo(lifeTime); return(UniTask.CompletedTask); }
protected sealed override UniTask OnExecute() { _valueData.Subscribe(x => OnValueUpdate(x).AttachExternalCancellation(LifeTime.TokenSource).Forget()) .AddTo(LifeTime); _isReady.Where(x => x) .CombineLatest(_valueData, (x, value) => value) .Subscribe(output.Publish) .AddTo(LifeTime); //reset local value var valueObservable = input.Receive <TData>(); if (distinctInput) { valueObservable.Subscribe(x => _valueData.Value = x).AddTo(LifeTime); } else { valueObservable.Subscribe(_valueData.SetValueForce).AddTo(LifeTime); } return(UniTask.CompletedTask); }
public IObservable <IView> SelectStatus(ViewStatus status) { return(_status. Where(x => x == status). Select(x => this)); }