@@ -40,23 +40,22 @@ internal class WebProxy : IWebProxy
4040 /// <summary> The default IConnection implementation. Uses <see cref="HttpClient" />.</summary>
4141 public class HttpConnection : IConnection
4242 {
43- private static DiagnosticSource DiagnosticSource { get ; } = new DiagnosticListener ( DiagnosticSources . HttpConnection . SourceName ) ;
44-
4543 private static readonly string MissingConnectionLimitMethodError =
4644 $ "Your target platform does not support { nameof ( ConnectionConfiguration . ConnectionLimit ) } "
4745 + $ " please set { nameof ( ConnectionConfiguration . ConnectionLimit ) } to -1 on your connection configuration/settings."
4846 + $ " this will cause the { nameof ( HttpClientHandler . MaxConnectionsPerServer ) } not to be set on { nameof ( HttpClientHandler ) } ";
4947
50- private RequestDataHttpClientFactory HttpClientFactory { get ; }
51-
5248 [ Obsolete ( "HttpConnection now uses a HttpClientFactory implementation to manage HttpClient and HttpMessageHandler instances. "
5349 + "This property is no longer used and will be removed in the next major release" ) ]
5450 protected readonly ConcurrentDictionary < int , HttpClient > Clients = new ConcurrentDictionary < int , HttpClient > ( ) ;
5551
52+ public HttpConnection ( ) => HttpClientFactory = new RequestDataHttpClientFactory ( r => CreateHttpClientHandler ( r ) ) ;
53+
5654 public int InUseHandlers => HttpClientFactory . InUseHandlers ;
5755 public int RemovedHandlers => HttpClientFactory . RemovedHandlers ;
56+ private static DiagnosticSource DiagnosticSource { get ; } = new DiagnosticListener ( DiagnosticSources . HttpConnection . SourceName ) ;
5857
59- public HttpConnection ( ) => HttpClientFactory = new RequestDataHttpClientFactory ( r => CreateHttpClientHandler ( r ) ) ;
58+ private RequestDataHttpClientFactory HttpClientFactory { get ; }
6059
6160 public virtual TResponse Request < TResponse > ( RequestData requestData )
6261 where TResponse : class , IElasticsearchResponse , new ( )
@@ -80,7 +79,7 @@ public virtual TResponse Request<TResponse>(RequestData requestData)
8079 if ( requestData . PostData != null )
8180 SetContent ( requestMessage , requestData ) ;
8281
83- using ( requestMessage ? . Content ?? ( IDisposable ) Stream . Null )
82+ using ( requestMessage ? . Content ?? ( IDisposable ) Stream . Null )
8483 using ( var d = DiagnosticSource . Diagnose < RequestData , int ? > ( DiagnosticSources . HttpConnection . SendAndReceiveHeaders , requestData ) )
8584 {
8685 if ( requestData . TcpStats )
@@ -113,10 +112,11 @@ public virtual TResponse Request<TResponse>(RequestData requestData)
113112 {
114113 ex = e ;
115114 }
116- using ( receive )
115+ using ( receive )
117116 using ( responseStream ??= Stream . Null )
118117 {
119- var response = ResponseBuilder . ToResponse < TResponse > ( requestData , ex , statusCode , warnings , responseStream , mimeType , productNames ? . FirstOrDefault ( ) ) ;
118+ var response = ResponseBuilder . ToResponse < TResponse > ( requestData , ex , statusCode , warnings , responseStream ,
119+ productNames ? . FirstOrDefault ( ) , mimeType ) ;
120120
121121 // set TCP and threadpool stats on the response here so that in the event the request fails after the point of
122122 // gathering stats, they are still exposed on the call details. Ideally these would be set inside ResponseBuilder.ToResponse,
@@ -150,7 +150,7 @@ public virtual async Task<TResponse> RequestAsync<TResponse>(RequestData request
150150 if ( requestData . PostData != null )
151151 await SetContentAsync ( requestMessage , requestData , cancellationToken ) . ConfigureAwait ( false ) ;
152152
153- using ( requestMessage ? . Content ?? ( IDisposable ) Stream . Null )
153+ using ( requestMessage ? . Content ?? ( IDisposable ) Stream . Null )
154154 using ( var d = DiagnosticSource . Diagnose < RequestData , int ? > ( DiagnosticSources . HttpConnection . SendAndReceiveHeaders , requestData ) )
155155 {
156156 if ( requestData . TcpStats )
@@ -159,7 +159,8 @@ public virtual async Task<TResponse> RequestAsync<TResponse>(RequestData request
159159 if ( requestData . ThreadPoolStats )
160160 threadPoolStats = ThreadPoolStats . GetStats ( ) ;
161161
162- responseMessage = await client . SendAsync ( requestMessage , HttpCompletionOption . ResponseHeadersRead , cancellationToken ) . ConfigureAwait ( false ) ;
162+ responseMessage = await client . SendAsync ( requestMessage , HttpCompletionOption . ResponseHeadersRead , cancellationToken )
163+ . ConfigureAwait ( false ) ;
163164 statusCode = ( int ) responseMessage . StatusCode ;
164165 d . EndState = statusCode ;
165166 }
@@ -187,7 +188,7 @@ public virtual async Task<TResponse> RequestAsync<TResponse>(RequestData request
187188 using ( responseStream ??= Stream . Null )
188189 {
189190 var response = await ResponseBuilder . ToResponseAsync < TResponse >
190- ( requestData , ex , statusCode , warnings , responseStream , mimeType , productNames ? . FirstOrDefault ( ) , cancellationToken )
191+ ( requestData , ex , statusCode , warnings , responseStream , productNames ? . FirstOrDefault ( ) , mimeType , cancellationToken )
191192 . ConfigureAwait ( false ) ;
192193
193194 // set TCP and thread pool stats on the response here so that in the event the request fails after the point of
@@ -209,7 +210,6 @@ protected virtual HttpMessageHandler CreateHttpClientHandler(RequestData request
209210
210211 // same limit as desktop clr
211212 if ( requestData . ConnectionSettings . ConnectionLimit > 0 )
212- {
213213 try
214214 {
215215 handler . MaxConnectionsPerServer = requestData . ConnectionSettings . ConnectionLimit ;
@@ -222,7 +222,6 @@ protected virtual HttpMessageHandler CreateHttpClientHandler(RequestData request
222222 {
223223 throw new Exception ( MissingConnectionLimitMethodError , e ) ;
224224 }
225- }
226225
227226 if ( ! requestData . ProxyAddress . IsNullOrEmpty ( ) )
228227 {
@@ -291,7 +290,6 @@ protected virtual bool SetApiKeyAuthenticationIfNeeded(HttpRequestMessage reques
291290
292291 requestMessage . Headers . Authorization = new AuthenticationHeaderValue ( "ApiKey" , apiKey ) ;
293292 return true ;
294-
295293 }
296294
297295 // TODO - make private in 8.0 and only expose SetAuthenticationIfNeeded
@@ -401,7 +399,7 @@ private static async Task SetContentAsync(HttpRequestMessage message, RequestDat
401399 await stream . DisposeAsync ( ) . ConfigureAwait ( false ) ;
402400
403401#else
404- stream . Dispose ( ) ;
402+ stream . Dispose ( ) ;
405403#endif
406404 }
407405 else
0 commit comments