Ejemplo n.º 1
0
        public void EnqueueResponse(Guid controllerId, CloudResponseMessage response)
        {
            ControllerContext controllerContext;

            lock (_controllerContexts)
            {
                controllerContext = GetOrCreateControllerContext(controllerId);
            }

            controllerContext.EnqueueResponse(response);
        }
Ejemplo n.º 2
0
        public void Complete(CloudResponseMessage response)
        {
            ResponseMessage = response;

            if (response != null)
            {
                _taskCompletionSource.SetResult(response);
            }
            else
            {
                _taskCompletionSource.SetCanceled();
            }
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
            }
        }