/// <inheritdoc/> public override async Task <IServiceRemotingResponseMessage> HandleRequestResponseAsync(IServiceRemotingRequestContext requestContext, IServiceRemotingRequestMessage requestMessage) { var handleExtended = false; Uri serviceUri = null; object state = null; Exception exception = null; var header = requestMessage.GetHeader() as IActorRemotingMessageHeaders; //check to see if message headers are assignable if (header != null) { handleExtended = true; serviceUri = (Uri)header.GetCustomHeaders()[CustomHeaders.ReservedHeaderServiceUri]; RemotingContext.FromRemotingMessageHeader(header); } if (BeforeHandleRequestResponseAsync != null && handleExtended) { state = await BeforeHandleRequestResponseAsync.Invoke(new ActorRequestInfo(requestMessage, header.ActorId, header.MethodName, serviceUri)); } IServiceRemotingResponseMessage responseMessage = null; try { responseMessage = await base.HandleRequestResponseAsync(requestContext, requestMessage); } catch (Exception ex) { exception = ex; throw; } finally { if (AfterHandleRequestResponseAsync != null && handleExtended) { await AfterHandleRequestResponseAsync.Invoke(new ActorResponseInfo(responseMessage, header.ActorId, header.MethodName, serviceUri, state, exception)); } } return(responseMessage); }
/// <inheritdoc/> public override async Task <IServiceRemotingResponseMessage> HandleRequestResponseAsync(IServiceRemotingRequestContext requestContext, IServiceRemotingRequestMessage requestMessage) { var header = requestMessage.GetHeader(); var serviceUri = (Uri)header.GetCustomHeaders()[CustomHeaders.ReservedHeaderServiceUri]; RemotingContext.FromRemotingMessageHeader(header); object state = null; Exception exception = null; if (BeforeHandleRequestResponseAsync != null) { state = await BeforeHandleRequestResponseAsync.Invoke(new ServiceRequestInfo(requestMessage, header.MethodName, serviceUri)); } IServiceRemotingResponseMessage responseMessage = null; try { responseMessage = await base.HandleRequestResponseAsync(requestContext, requestMessage); } catch (Exception ex) { exception = ex; throw; } finally { if (AfterHandleRequestResponseAsync != null) { await AfterHandleRequestResponseAsync.Invoke(new ServiceResponseInfo(responseMessage, header.MethodName, serviceUri, state, exception)); } } return(responseMessage); }