Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ GetStringAsyncCore()

async Task< string > System.Net.Http.HttpClient.GetStringAsyncCore ( HttpRequestMessage request,
CancellationToken cancellationToken )
inlineprivate

Definition at line 178 of file HttpClient.cs.

179 {
180 bool telemetryStarted = StartSend(request);
181 bool responseContentTelemetryStarted = false;
183 CancellationTokenSource cts = tuple.Item1;
184 bool disposeCts = tuple.Item2;
185 CancellationTokenSource pendingRequestsCts = tuple.Item3;
186 HttpResponseMessage response = null;
187 try
188 {
189 response = await base.SendAsync(request, cts.Token).ConfigureAwait(continueOnCapturedContext: false);
190 ThrowForNullResponse(response);
191 response.EnsureSuccessStatusCode();
192 HttpContent c = response.Content;
193 if (HttpTelemetry.Log.IsEnabled() && telemetryStarted)
194 {
195 HttpTelemetry.Log.ResponseContentStart();
196 responseContentTelemetryStarted = true;
197 }
198 Stream stream = c.TryReadAsStream();
199 Stream stream2 = stream;
200 if (stream2 == null)
201 {
202 stream2 = await c.ReadAsStreamAsync(cts.Token).ConfigureAwait(continueOnCapturedContext: false);
203 }
204 using Stream responseStream = stream2;
205 using HttpContent.LimitArrayPoolWriteStream buffer = new HttpContent.LimitArrayPoolWriteStream(_maxResponseContentBufferSize, (int)c.Headers.ContentLength.GetValueOrDefault());
206 _ = 2;
207 try
208 {
209 await responseStream.CopyToAsync(buffer, cts.Token).ConfigureAwait(continueOnCapturedContext: false);
210 }
211 catch (Exception e) when (HttpContent.StreamCopyExceptionNeedsWrapping(e))
212 {
213 throw HttpContent.WrapStreamCopyException(e);
214 }
215 if (buffer.Length > 0)
216 {
217 return HttpContent.ReadBufferAsString(buffer.GetBuffer(), c.Headers);
218 }
219 return string.Empty;
220 }
221 catch (Exception e2)
222 {
223 HandleFailure(e2, telemetryStarted, response, cts, cancellationToken, pendingRequestsCts);
224 throw;
225 }
226 finally
227 {
228 FinishSend(cts, disposeCts, telemetryStarted, responseContentTelemetryStarted);
229 }
230 }
Task CopyToAsync(Stream destination)
Definition Stream.cs:571
static void FinishSend(CancellationTokenSource cts, bool disposeCts, bool telemetryStarted, bool responseContentTelemetryStarted)
void HandleFailure(Exception e, bool telemetryStarted, HttpResponseMessage response, CancellationTokenSource cts, CancellationToken cancellationToken, CancellationTokenSource pendingRequestsCts)
CancellationTokenSource bool CancellationTokenSource PendingRequestsCts PrepareCancellationTokenSource(CancellationToken cancellationToken)
static void ThrowForNullResponse([NotNull] HttpResponseMessage response)
static bool StartSend(HttpRequestMessage request)
new ConfiguredTaskAwaitable< TResult > ConfigureAwait(bool continueOnCapturedContext)
Definition Task.cs:226

References System.Net.Http.HttpClient._maxResponseContentBufferSize, System.buffer, System.cancellationToken, System.Threading.Tasks.Task< TResult >.ConfigureAwait(), System.Net.Http.HttpResponseMessage.Content, System.Net.Http.Headers.HttpContentHeaders.ContentLength, System.IO.Stream.CopyToAsync(), System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode(), System.Net.Http.HttpClient.FinishSend(), System.Net.Http.HttpClient.HandleFailure(), System.Net.Http.HttpContent.Headers, System.Net.Http.HttpTelemetry.Log, System.Net.Http.HttpClient.PrepareCancellationTokenSource(), System.Net.Http.HttpContent.ReadAsStreamAsync(), System.Net.Http.HttpContent.ReadBufferAsString(), System.Net.Http.HttpClient.StartSend(), System.stream, System.Net.Http.HttpContent.StreamCopyExceptionNeedsWrapping(), System.Net.Http.HttpClient.ThrowForNullResponse(), System.Threading.CancellationTokenSource.Token, System.Net.Http.HttpContent.TryReadAsStream(), and System.Net.Http.HttpContent.WrapStreamCopyException().

Referenced by System.Net.Http.HttpClient.GetStringAsync().