Exemplo n.º 1
0
        private async Task <bool> ExecuteLazyOperationsSingleStep(ResponseTimeInformation responseTimeInformation, List <GetRequest> requests, CancellationToken token = default)
        {
            var multiGetOperation = new MultiGetOperation(this);
            var multiGetCommand   = multiGetOperation.CreateRequest(requests);
            await RequestExecutor.ExecuteAsync(multiGetCommand, Context, sessionInfo : SessionInfo, token : token).ConfigureAwait(false);

            var responses = multiGetCommand.Result;

            for (var i = 0; i < PendingLazyOperations.Count; i++)
            {
                var response = responses[i];

                response.Headers.TryGetValue(Constants.Headers.RequestTime, out string tempReqTime);

                long.TryParse(tempReqTime, out long totalTime);

                responseTimeInformation.DurationBreakdown.Add(new ResponseTimeItem
                {
                    Url      = requests[i].UrlAndQuery,
                    Duration = TimeSpan.FromMilliseconds(totalTime)
                });

                if (response.RequestHasErrors())
                {
                    throw new InvalidOperationException("Got an error from server, status code: " + (int)response.StatusCode + Environment.NewLine + response.Result);
                }

                PendingLazyOperations[i].HandleResponse(response);
                if (PendingLazyOperations[i].RequiresRetry)
                {
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 2
0
        private bool ExecuteLazyOperationsSingleStep(ResponseTimeInformation responseTimeInformation, List <GetRequest> requests, Stopwatch sw)
        {
            var multiGetOperation = new MultiGetOperation(this);

            using var multiGetCommand = multiGetOperation.CreateRequest(requests);
            RequestExecutor.Execute(multiGetCommand, Context, sessionInfo: SessionInfo);
            var responses = multiGetCommand.Result;

            if (multiGetCommand.AggressivelyCached == false)
            {
                IncrementRequestCount();
            }

            for (var i = 0; i < PendingLazyOperations.Count; i++)
            {
                long   totalTime;
                string tempReqTime;
                var    response = responses[i];

                response.Headers.TryGetValue(Constants.Headers.RequestTime, out tempReqTime);
                response.Elapsed = sw.Elapsed;

                long.TryParse(tempReqTime, out totalTime);

                responseTimeInformation.DurationBreakdown.Add(new ResponseTimeItem
                {
                    Url      = requests[i].UrlAndQuery,
                    Duration = TimeSpan.FromMilliseconds(totalTime)
                });

                if (response.RequestHasErrors())
                {
                    throw new InvalidOperationException("Got an error from server, status code: " + (int)response.StatusCode + Environment.NewLine + response.Result);
                }

                PendingLazyOperations[i].HandleResponse(response);
                if (PendingLazyOperations[i].RequiresRetry)
                {
                    return(true);
                }
            }
            return(false);
        }