Esempio n. 1
0
            public Logic(TaskCompletionSource <T> promise, LastOrDefaultStage <T> stage) : base(stage.Shape)
            {
                _promise = promise;
                _stage   = stage;

                SetHandler(stage.In, this);
            }
Esempio n. 2
0
            public Logic(TaskCompletionSource <T> promise, LastOrDefaultStage <T> stage) : base(stage.Shape)
            {
                _stage = stage;
                var prev = default(T);

                SetHandler(stage.In, onPush: () =>
                {
                    prev = Grab(stage.In);
                    Pull(stage.In);
                },
                           onUpstreamFinish: () =>
                {
                    var head = prev;
                    prev     = default(T);
                    promise.TrySetResult(head);
                    CompleteStage();
                },
                           onUpstreamFailure: cause =>
                {
                    prev = default(T);
                    promise.TrySetException(cause);
                    FailStage(cause);
                });
            }