/// <summary>
        /// Adds the provided middleware for task orchestrations.
        /// </summary>
        /// <param name="builder">The builder to add to, not null.</param>
        /// <param name="descriptor">The middleware descriptor to add.</param>
        /// <returns>This instance, for chaining calls.</returns>
        public static ITaskHubWorkerBuilder UseOrchestrationMiddleware(
            this ITaskHubWorkerBuilder builder, TaskMiddlewareDescriptor descriptor)
        {
            Check.NotNull(builder, nameof(builder));
            Check.NotNull(descriptor, nameof(descriptor));

            builder.OrchestrationMiddleware.Add(descriptor);
            return(builder);
        }
 /// <inheritdoc />
 public ITaskHubWorkerBuilder UseActivityMiddleware(TaskMiddlewareDescriptor descriptor)
 {
     Check.NotNull(descriptor, nameof(descriptor));
     _activitiesMiddleware.Add(descriptor.Type);
     return(this);
 }
 /// <inheritdoc />
 public ITaskHubWorkerBuilder UseOrchestrationMiddleware(TaskMiddlewareDescriptor descriptor)
 {
     Check.NotNull(descriptor, nameof(descriptor));
     _orchestrationsMiddleware.Add(descriptor.Type);
     return(this);
 }
 private static Func <DispatchMiddlewareContext, Func <Task>, Task> WrapMiddleware(
     TaskMiddlewareDescriptor descriptor)
 {
     return((context, next) => TaskMiddlewareRunner.RunAsync(descriptor, context, next));
 }