From b5f0c5387f7a98875f60fdf09c8dbe56e5c2766d Mon Sep 17 00:00:00 2001 From: adamw Date: Mon, 24 Jul 2017 17:01:20 +0200 Subject: Closing the async http client if created by sttp --- .../future/FutureAsyncHttpClientHandler.scala | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'async-http-client-handler/future') diff --git a/async-http-client-handler/future/src/main/scala/com/softwaremill/sttp/asynchttpclient/future/FutureAsyncHttpClientHandler.scala b/async-http-client-handler/future/src/main/scala/com/softwaremill/sttp/asynchttpclient/future/FutureAsyncHttpClientHandler.scala index a2e49a2..11808d3 100644 --- a/async-http-client-handler/future/src/main/scala/com/softwaremill/sttp/asynchttpclient/future/FutureAsyncHttpClientHandler.scala +++ b/async-http-client-handler/future/src/main/scala/com/softwaremill/sttp/asynchttpclient/future/FutureAsyncHttpClientHandler.scala @@ -15,10 +15,12 @@ import org.reactivestreams.Publisher import scala.concurrent.{ExecutionContext, Future, Promise} -class FutureAsyncHttpClientHandler private (asyncHttpClient: AsyncHttpClient)( - implicit ec: ExecutionContext) +class FutureAsyncHttpClientHandler private ( + asyncHttpClient: AsyncHttpClient, + closeClient: Boolean)(implicit ec: ExecutionContext) extends AsyncHttpClientHandler[Future, Nothing](asyncHttpClient, - new FutureMonad()) { + new FutureMonad(), + closeClient) { override protected def streamBodyToPublisher( s: Nothing): Publisher[ByteBuffer] = s // nothing is everything @@ -38,7 +40,8 @@ object FutureAsyncHttpClientHandler { def apply()( implicit ec: ExecutionContext = ExecutionContext.Implicits.global) : FutureAsyncHttpClientHandler = - new FutureAsyncHttpClientHandler(new DefaultAsyncHttpClient()) + new FutureAsyncHttpClientHandler(new DefaultAsyncHttpClient(), + closeClient = true) /** * @param ec The execution context for running non-network related operations, @@ -48,7 +51,8 @@ object FutureAsyncHttpClientHandler { def usingConfig(cfg: AsyncHttpClientConfig)( implicit ec: ExecutionContext = ExecutionContext.Implicits.global) : FutureAsyncHttpClientHandler = - new FutureAsyncHttpClientHandler(new DefaultAsyncHttpClient()) + new FutureAsyncHttpClientHandler(new DefaultAsyncHttpClient(), + closeClient = true) /** * @param ec The execution context for running non-network related operations, @@ -58,7 +62,7 @@ object FutureAsyncHttpClientHandler { def usingClient(client: AsyncHttpClient)(implicit ec: ExecutionContext = ExecutionContext.Implicits.global) : FutureAsyncHttpClientHandler = - new FutureAsyncHttpClientHandler(client) + new FutureAsyncHttpClientHandler(client, closeClient = false) } private[future] class FutureMonad(implicit ec: ExecutionContext) -- cgit v1.2.3