Esempio n. 1
0
        private static AsyncContextTransformation <TContext> Compose(AsyncContextTransformation <TContext> f1, AsyncContextHandler <TContext> f2) =>
        async(c, ct) =>
        {
            var r = await f1(c, ct).ConfigureAwait(false);

            if (!ct.IsCancellationRequested)
            {
                await f2(r, ct).ConfigureAwait(false);
            }

            return(r);
        };
Esempio n. 2
0
        /// <inheritdoc />
        public IAsyncCommandBuilder <TContext> Add <TCommand>(TCommand command) where TCommand : IAsyncCommand <TContext>
        {
            _sequence = Compose(_sequence, command.ExecuteAsync);

            return(this);
        }
 public AsyncCommand(AsyncContextTransformation <T> body) => _body = body;
 public static IAsyncCommandBuilder <T> AddIf <T>(this IAsyncCommandBuilder <T> builder, Predicate <T> predicate, AsyncContextTransformation <T> action) =>
 builder.Add(new AsyncCommand <T>((i, ct) => predicate(i) ? action(i, ct) : Task.FromResult(i)));
 public static IAsyncCommandBuilder <T> Add <T>(this IAsyncCommandBuilder <T> builder, AsyncContextTransformation <T> action) =>
 builder.Add(new AsyncCommand <T>(action));
 public static ICommandBuilder <T> Add <T>(this ICommandBuilder <T> builder, AsyncContextTransformation <T> transformation) =>
 builder.Add(new AsyncCommand <T>(transformation).ToSync());