コード例 #1
0
        /// <summary>
        ///     Makes an RPC style request
        /// </summary>
        /// <typeparam name="TRequest">The request type</typeparam>
        /// <typeparam name="TResponse">The response type</typeparam>
        /// <param name="rpc">The rpc instance.</param>
        /// <param name="request">The request message.</param>
        /// <param name="cancellationToken">The cancellation token</param>
        /// <returns>The response</returns>
        public static Task <TResponse> RequestAsync <TRequest, TResponse>(
            this IRpc rpc,
            TRequest request,
            CancellationToken cancellationToken = default
            )
        {
            Preconditions.CheckNotNull(rpc, "rpc");

            return(rpc.RequestAsync <TRequest, TResponse>(request, c => { }, cancellationToken));
        }
コード例 #2
0
        /// <summary>
        ///     Makes an RPC style request
        /// </summary>
        /// <typeparam name="TRequest">The request type</typeparam>
        /// <typeparam name="TResponse">The response type</typeparam>
        /// <param name="rpc">The rpc instance.</param>
        /// <param name="request">The request message.</param>
        /// <param name="cancellationToken">The cancellation token</param>
        /// <returns>The response</returns>
        public static TResponse Request <TRequest, TResponse>(
            this IRpc rpc,
            TRequest request,
            CancellationToken cancellationToken = default
            )
        {
            Preconditions.CheckNotNull(rpc, "rpc");

            return(rpc.RequestAsync <TRequest, TResponse>(request, cancellationToken)
                   .GetAwaiter()
                   .GetResult());
        }
コード例 #3
0
        /// <summary>
        ///     Makes an RPC style request
        /// </summary>
        /// <param name="rpc">The rpc instance.</param>
        /// <param name="request">The request message.</param>
        /// <param name="requestType">The request type</param>
        /// <param name="responseType">The response type</param>
        /// <param name="cancellationToken">The cancellation token</param>
        /// <returns>The response</returns>
        public static Task <object> RequestAsync(
            this IRpc rpc,
            object request,
            Type requestType,
            Type responseType,
            CancellationToken cancellationToken = default
            )
        {
            Preconditions.CheckNotNull(rpc, "rpc");

            return(rpc.RequestAsync(request, requestType, responseType, c => { }, cancellationToken));
        }
コード例 #4
0
        /// <summary>
        ///     Makes an RPC style request
        /// </summary>
        /// <param name="rpc">The rpc instance.</param>
        /// <param name="request">The request message.</param>
        /// <param name="requestType">The request type</param>
        /// <param name="responseType">The response type</param>
        /// <param name="cancellationToken">The cancellation token</param>
        /// <returns>The response</returns>
        public static object Request(
            this IRpc rpc,
            object request,
            Type requestType,
            Type responseType,
            CancellationToken cancellationToken = default
            )
        {
            Preconditions.CheckNotNull(rpc, "rpc");

            return(rpc.RequestAsync(request, requestType, responseType, cancellationToken)
                   .GetAwaiter()
                   .GetResult());
        }
コード例 #5
0
        public async Task ReturnsNotFoundGivenNoRemainingItems()
        {
            //Arrange
            var request      = new SimpleMessageParam("test");
            var mockResponse = new SimpleMessageResponse
            {
                Timespam     = new TimeSpan(1000),
                ResponseText = "test"
            };

            _rpc.RequestAsync <SimpleMessageParam, SimpleMessageResponse>(Arg.Any <SimpleMessageParam>(), Arg.Any <CancellationToken>()).Returns(mockResponse);
            var service = new RequestService(_rpc, _logger);

            //Act
            var result = await service.SimpleMessageRequest(request, CancellationToken.None);

            //Assert
            Assert.Equal("test", result.ResponseText);
            Assert.Equal(new TimeSpan(1000), result.Timespam);
        }
コード例 #6
0
        public async Task Should_be_able_to_send_struct()
        {
            var request      = DateTime.UtcNow;
            var requestType  = typeof(DateTime);
            var responseType = typeof(long);

            rpc.RequestAsync <DateTime, long>(Arg.Any <DateTime>(), configure).Returns(42);

            var response = await rpc.RequestAsync(request, requestType, responseType, configure);

            response.Should().Be(42);

#pragma warning disable 4014
            rpc.Received()
            .RequestAsync <DateTime, long>(
                Arg.Is(request),
                Arg.Is(configure),
                Arg.Any <CancellationToken>()
                );
#pragma warning restore 4014
        }
コード例 #7
0
 public async Task <SimpleMessageResponse> SimpleMessageRequest(SimpleMessageParam request, CancellationToken cancellationToken)
 {
     request.CreateTimestamp = DateTimeOffset.Now;
     _logger.LogInformation($"Сообщение отправлено в очередь в { DateTimeOffset.Now }");
     return(await _rpc.RequestAsync <SimpleMessageParam, SimpleMessageResponse>(request, cancellationToken));
 }