internal void SendReply(ulong conversationId, IMessage response, TaskCompletionSource <IMessage> taskSource, ILayerStack layerStack, InMemFrameQueue queue) { var requestMetrics = Metrics.StartRequestMetrics(connection.ConnectionMetrics); var sendContext = new SimpleInMemSendContext(connection, connection.ConnectionMetrics, requestMetrics); IBonded layerData = null; Error layerError = LayerStackUtils.ProcessOnSend(layerStack, MessageType.RESPONSE, sendContext, out layerData, logger); // If there was a layer error, replace the response with the layer error if (layerError != null) { logger.Site().Error("Sending reply for conversation {0} failed due to layer error (Code: {1}, Message: {2}).", conversationId, layerError.error_code, layerError.message); // Set layer error as result of this Bond method call, replacing original response. // Since this error will be returned to client, cleanse out internal server error details, if any. response = Message.FromError(Errors.CleanseInternalServerError(layerError)); } var payload = Util.NewPayLoad(conversationId, SimpleInMemMessageType.RESPONSE, layerData, response, taskSource); queue.Enqueue(payload); }
internal void SendReply(ulong conversationId, IMessage response, TaskCompletionSource<IMessage> taskSource, ILayerStack layerStack, InMemFrameQueue queue) { var sendContext = new SimpleInMemSendContext(connection); IBonded layerData = null; Error layerError = LayerStackUtils.ProcessOnSend(layerStack, MessageType.Response, sendContext, out layerData, logger); // If there was a layer error, replace the response with the layer error if (layerError != null) { logger.Site().Error("Sending reply for conversation {0} failed due to layer error (Code: {1}, Message: {2}).", conversationId, layerError.error_code, layerError.message); // Set layer error as result of this Bond method call, replacing original response. // Since this error will be returned to client, cleanse out internal server error details, if any. response = Message.FromError(Errors.CleanseInternalServerError(layerError)); } var payload = Util.NewPayLoad(conversationId, PayloadType.Response, layerData, response, taskSource); queue.Enqueue(payload); }