Example #1
0
 /// <summary>
 ///     Ensures the response is of a certain type, just in case something goes haywire on the wire
 /// </summary>
 private static void RequireResponseType(ResponseWrapper response, ResponseWrapper.MessageOneofCase type)
 {
     if (response.MessageCase != type)
     {
         throw new ResponseException($"Invalid response type, expected {type}, got {response.MessageCase}");
     }
 }
Example #2
0
        /// <summary>
        ///     Utility method for executing a request and awaiting the response
        /// </summary>
        /// <param name="wrapper">The request to execute</param>
        /// <param name="requiredResponseType">
        ///     The expected response type. If the response is not of this type,
        ///     an exception will be thrown.
        /// </param>
        /// <returns>The valid response</returns>
        private async Task <ResponseWrapper> ExecuteRequest(RequestWrapper wrapper,
                                                            ResponseWrapper.MessageOneofCase requiredResponseType)
        {
            var connection = _pool.Get();

            var refId = await SendMessage(wrapper, connection);

            // Wait for a response
            var responseWrapper = await WaitForResponse(refId, connection);

            // Make sure the response is valid
            HandlePossibleError(responseWrapper);
            RequireResponseType(responseWrapper, requiredResponseType);

            return(responseWrapper);
        }