public void EnqueueResponse(Guid controllerId, CloudResponseMessage response) { ControllerContext controllerContext; lock (_controllerContexts) { controllerContext = GetOrCreateControllerContext(controllerId); } controllerContext.EnqueueResponse(response); }
public void Complete(CloudResponseMessage response) { ResponseMessage = response; if (response != null) { _taskCompletionSource.SetResult(response); } else { _taskCompletionSource.SetCanceled(); } }
public void SendResponse([FromBody] CloudResponseMessage response) { if (response == null) { throw new ArgumentNullException(nameof(response)); } Guid controllerId; ValidateControllerSecurity(out controllerId); Trace.TraceInformation($"Received response from controller '{controllerId}'."); _messageBroker.EnqueueResponse(controllerId, response); }
private static StringContent CreateContent(CloudConnectorApiContext apiContext) { var cloudMessage = new CloudResponseMessage(); cloudMessage.Header.CorrelationId = apiContext.RequestMessage.Header.CorrelationId; cloudMessage.Response.ResultCode = apiContext.ResultCode; cloudMessage.Response.Result = apiContext.Result; var stringContent = new StringContent(JsonConvert.SerializeObject(cloudMessage)); stringContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json"); stringContent.Headers.ContentEncoding.Add("utf-8"); return(stringContent); }
public void EnqueueResponse(CloudResponseMessage response) { lock (_pendingRequests) { MessageContext pendingMessage; if (!_pendingRequests.TryGetValue(response.Header.CorrelationId, out pendingMessage)) { Trace.WriteLine($"Found no pending request for response with correlation ID '{response.Header.CorrelationId}'."); return; } pendingMessage.Complete(response); _pendingRequests.Remove(response.Header.CorrelationId); } }