Пример #1
0
        private dynamic PresentationMessage(InspectionMessage message)
        {
            var transportMessage = GetTransportMessage(message.Stream);

            return(new
            {
                message.SourceQueueUri,
                Message = Encoding.UTF8.GetString(transportMessage.Message),
                transportMessage.AssemblyQualifiedName,
                transportMessage.CompressionAlgorithm,
                transportMessage.CorrelationId,
                transportMessage.EncryptionAlgorithm,
                ExpiryDate = transportMessage.ExpiryDate.ToUniversalTime(),
                transportMessage.FailureMessages,
                transportMessage.Headers,
                IgnoreTillDate = transportMessage.IgnoreTillDate.ToUniversalTime(),
                transportMessage.MessageId,
                transportMessage.MessageReceivedId,
                transportMessage.MessageType,
                transportMessage.PrincipalIdentityName,
                transportMessage.RecipientInboxWorkQueueUri,
                SendDate = transportMessage.SendDate.ToUniversalTime(),
                transportMessage.SenderInboxWorkQueueUri
            });
        }
Пример #2
0
        private async Task <TResponse> InvokeCommandCore <TResponse>(ICommand <TResponse> command, CancellationToken cancellation)
        {
            if (WebSocket.State == WebSocketState.Open)
            {
                var id = Interlocked.Increment(ref CommandId);

                var frame = new InspectionMessage
                {
                    Id     = id,
                    Method = command.Name,
                    Params = JObject.Parse(JsonConvert.SerializeObject(command, JsonSerializerSettings))
                };

                var frameText = JsonConvert.SerializeObject(frame, JsonSerializerSettings);
                var bytes     = Encoding.UTF8.GetBytes(frameText);

                try
                {
                    var response = RegisterCommandResponseHandler <TResponse>(id, command, cancellation);

                    await WebSocket.SendAsync(new ArraySegment <byte>(bytes), WebSocketMessageType.Text, endOfMessage : true, cancellation)
                    .ConfigureAwait(false);

                    return(await response.ConfigureAwait(false));
                }
                catch (WebSocketException)
                {
                }
            }

            await Disconnect().ConfigureAwait(false);

            throw new CommandFailedException(command, -1, "The inspector is disconnected.");
        }
Пример #3
0
        private Task DispatchSubscribedEvents(InspectionMessage message)
        {
            EventDispatcher dispatcher = null;

            if (message.Method != null && EventDispatchers?.TryGetValue(message.Method, out dispatcher) == true)
            {
                Debug.Assert(dispatcher != null);

                dispatcher.Dispatch(message.Params);
            }

            return(Task.FromResult(true));
        }