Exemple #1
0
        /// <summary>
        /// Reads a <see cref="DiagnosticsRelayResponse"/> from a <see cref="NSDictionary"/>.
        /// </summary>
        /// <param name="dict">
        /// The message data.
        /// </param>
        /// <returns>
        /// A <see cref="DiagnosticsRelayResponse"/> object.
        /// </returns>
        public static DiagnosticsRelayResponse Read(NSDictionary dict)
        {
            if (dict == null)
            {
                throw new ArgumentNullException(nameof(dict));
            }

            var value = new DiagnosticsRelayResponse();

            value.Status      = Enum.Parse <DiagnosticsRelayStatus>(dict.GetString(nameof(Status)));
            value.Diagnostics = dict.GetDictionary(nameof(Diagnostics));
            return(value);
        }
Exemple #2
0
        private async Task <DiagnosticsRelayResponse> ExecuteRequestAsync(
            DiagnosticsRelayRequest request,
            CancellationToken cancellationToken)
        {
            await this.protocol.WriteMessageAsync(request.ToDictionary(), cancellationToken).ConfigureAwait(false);

            var response = await this.protocol.ReadMessageAsync(cancellationToken).ConfigureAwait(false);

            if (response == null)
            {
                return(null);
            }

            var value = DiagnosticsRelayResponse.Read(response);

            if (value.Status != DiagnosticsRelayStatus.Success)
            {
                throw new DiagnosticsRelayException(value.Status);
            }

            return(value);
        }