コード例 #1
0
        public static ICommandReceiver <T> Trace <T>(
            this ICommandReceiver <T> receiver) =>
        receiver.UseMiddleware(
            receive: async(handle, timeout, next) =>
        {
            return(await next(async delivery =>
            {
                using (var operation = Log.Receive(delivery))
                {
                    var result = await handle(delivery);

                    Log.Completion(operation, delivery, result);

                    return result;
                }
            }, timeout));
        },
            subscribe: (onNext, next) =>
        {
            using (Log.Subscribe <T>())
            {
                return(next(async delivery =>
                {
                    using (var operation1 = Log.Receive(delivery))
                    {
                        var result1 = await onNext(delivery);

                        Log.Completion(operation1, delivery, result1);

                        return result1;
                    }
                }));
            }
        });