Пример #1
0
        private void OnRequestComplete()
        {
            if (CancellationTokenSource.IsCancellationRequested)
            {
                return;
            }
            RequestTask task = Tasks.Last(x => x.Response.IsCompleted);

            if (task.Response.IsCanceled)
            {
                CliNotifier.PrinWarning("Cannot load response");
            }
            else if (task.Response.IsFaulted)
            {
                CliNotifier.PrinWarning("Server cancel connection");
            }
            else
            {
                task.EndedAt = DateTime.Now.TimeOfDay;
                CliNotifier.PrintInfo($"Request finished by: {task.TotalExecutionTime} with status code: { task.Response.Result.StatusCode}");
                Completed.Add(task);
                if (IsStopSignal(task.Response.Result))
                {
                    StopExecution();
                }
            }
            RuningTasks--;
            if (RuningTasks < ConfigParser.GetParallel())
            {
                AddTask();
            }
        }
Пример #2
0
        private void AddTask()
        {
            RequestTask requestTask = new RequestTask();

            requestTask.StartedAt = DateTime.Now.TimeOfDay;
            requestTask.Response  = Client.SendAsync(ConfigParser.GetRequest(), CancellationTokenSource.Token);
            requestTask.Response.GetAwaiter().OnCompleted(OnRequestComplete);
            Tasks.Add(requestTask);
            RuningTasks++;
        }
Пример #3
0
        public CompletedRequest(RequestTask task)
        {
            StartedAt    = task.StartedAt;
            CompletedBy  = task.TotalExecutionTime;
            ResponseCode = task.Response.Result.StatusCode;
            Task <string> responseBody = task.Response.Result.Content.ReadAsStringAsync();

            responseBody.GetAwaiter().OnCompleted(() =>
            {
                ResponseMessage = responseBody.Result;
                return;
            });
        }