@@ -48,14 +48,17 @@ protected RequestHandlerBase(ILogger logger)
4848 /// <inheritdoc cref="IRequestHandler.HandleResponseAsync"/>
4949 public async Task HandleResponseAsync ( IConnection connection , Message message , IResponseHandler responseHandler , CancellationToken cancellationToken )
5050 {
51+ Stopwatch timer = new Stopwatch ( ) ;
52+ timer . Start ( ) ;
53+
5154 Connection = connection ;
5255 CancellationToken = cancellationToken ;
5356
5457 TRequest request = MessageUtilities . DeserializePayload < TRequest > ( message ) ;
5558
5659 try {
5760 TResponse response = null ;
58- Logger . Verbose ( string . Format ( Resources . HandlingRequest , message . Type , message . Method , message . Payload . ToString ( Formatting . None ) ) ) ;
61+ Logger . Verbose ( string . Format ( Resources . HandlingRequest , message . Type , message . Method , timer . ElapsedMilliseconds , message . Payload . ToString ( Formatting . None ) ) ) ;
5962 try {
6063 using ( GetProgressReporter ( connection , message , cancellationToken ) )
6164 {
@@ -64,21 +67,15 @@ public async Task HandleResponseAsync(IConnection connection, Message message, I
6467 }
6568 catch ( Exception ex ) when ( cancellationToken . IsCancellationRequested )
6669 {
70+ // NuGet will handle canceling event but verbose logs in this case might be interesting.
6771 Logger . Verbose ( string . Format ( Resources . RequestHandlerCancelingExceptionMessage , ex . InnerException , ex . Message ) ) ;
68- Logger . Verbose ( Resources . CancellationRequested ) ;
69-
70- // We have been canceled by NuGet. Send a cancellation response.
71- var cancelMessage = MessageUtilities . Create ( message . RequestId , MessageType . Cancel , message . Method ) ;
72- await connection . SendAsync ( cancelMessage , CancellationToken . None ) ;
73-
74- // We must guarantee that exactly one terminating message is sent, so do not fall through to send
75- // the normal response, but also do not rethrow.
7672 return ;
7773 }
78-
79- Logger . Verbose ( string . Format ( Resources . SendingResponse , message . Type , message . Method ) ) ;
74+ Logger . Verbose ( string . Format ( Resources . SendingResponse , message . Type , message . Method , timer . ElapsedMilliseconds ) ) ;
8075 // If we did not send a cancel message, we must submit the response even if cancellationToken is canceled.
8176 await responseHandler . SendResponseAsync ( message , response , CancellationToken . None ) . ConfigureAwait ( continueOnCapturedContext : false ) ;
77+
78+ Logger . Verbose ( string . Format ( Resources . TimeElapsedAfterSendingResponse , message . Type , message . Method , timer . ElapsedMilliseconds ) ) ;
8279 }
8380 catch ( Exception ex ) when ( LogExceptionAndReturnFalse ( ex ) )
8481 {
@@ -100,6 +97,7 @@ bool LogExceptionAndReturnFalse(Exception ex)
10097 }
10198
10299 CancellationToken = CancellationToken . None ;
100+ timer . Stop ( ) ;
103101 }
104102
105103 public abstract Task < TResponse > HandleRequestAsync ( TRequest request ) ;
0 commit comments