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

◆ SendAsync()

async Task< HttpResponseMessage > System.Net.Http.Http3Connection.SendAsync ( HttpRequestMessage request,
bool async,
CancellationToken cancellationToken )
inline

Definition at line 131 of file Http3Connection.cs.

132 {
133 QuicStream quicStream = null;
134 Http3RequestStream requestStream = null;
135 ValueTask valueTask = default(ValueTask);
136 try
137 {
138 while (true)
139 {
140 lock (SyncObj)
141 {
142 if (_connection != null)
143 {
145 {
147 goto IL_00ce;
148 }
150 requestStream = new Http3RequestStream(request, this, quicStream);
152 }
153 }
154 break;
155 IL_00ce:
157 }
158 if (quicStream == null)
159 {
160 throw new HttpRequestException(System.SR.net_http_request_aborted, null, RequestRetryType.RetryOnConnectionFailure);
161 }
162 requestStream.StreamId = quicStream.StreamId;
163 bool flag;
164 lock (SyncObj)
165 {
166 flag = _lastProcessedStreamId != -1 && requestStream.StreamId > _lastProcessedStreamId;
167 }
168 if (flag)
169 {
170 throw new HttpRequestException(System.SR.net_http_request_aborted, null, RequestRetryType.RetryOnConnectionFailure);
171 }
173 requestStream = null;
174 return await task.ConfigureAwait(continueOnCapturedContext: false);
175 }
177 {
178 Abort(ex);
179 throw new HttpRequestException(System.SR.Format(System.SR.net_http_http3_connection_error, ex.ErrorCode), ex, RequestRetryType.RetryOnConnectionFailure);
180 }
181 finally
182 {
183 requestStream?.Dispose();
184 }
185 }
void Add(TKey key, TValue value)
readonly Dictionary< QuicStream, Http3RequestStream > _activeRequests
ValueTask WaitForAvailableBidirectionalStreamsAsync(CancellationToken cancellationToken=default(CancellationToken))
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string net_http_http3_connection_error
Definition SR.cs:182
static string net_http_request_aborted
Definition SR.cs:120
Definition SR.cs:7

References System.Net.Http.Http3Connection._activeRequests, System.Net.Http.Http3Connection._connection, System.Net.Http.Http3Connection._lastProcessedStreamId, System.Net.Abort, System.Collections.Generic.Dictionary< TKey, TValue >.Add(), System.cancellationToken, System.SR.Format(), System.Net.Quic.QuicConnection.GetRemoteAvailableBidirectionalStreamCount(), System.SR.net_http_http3_connection_error, System.SR.net_http_request_aborted, System.Net.Quic.QuicConnection.OpenBidirectionalStream(), System.Net.Http.Http3Connection.SyncObj, System.task, and System.Net.Quic.QuicConnection.WaitForAvailableBidirectionalStreamsAsync().

Referenced by System.Net.Http.HttpConnectionPool.TrySendUsingHttp3Async().