From 3afca640808b2d4caaf7d0f4dd7300f26addc307 Mon Sep 17 00:00:00 2001 From: Emux Date: Sun, 4 Jun 2017 22:41:27 +0300 Subject: [PATCH] OkHttpEngine: add timeout options #138 --- .../org/oscim/tiling/source/OkHttpEngine.java | 40 ++++++++++++++++--- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/vtm-http/src/org/oscim/tiling/source/OkHttpEngine.java b/vtm-http/src/org/oscim/tiling/source/OkHttpEngine.java index 9b468f2b..0933af6c 100644 --- a/vtm-http/src/org/oscim/tiling/source/OkHttpEngine.java +++ b/vtm-http/src/org/oscim/tiling/source/OkHttpEngine.java @@ -30,6 +30,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.util.Map.Entry; +import java.util.concurrent.TimeUnit; import okhttp3.Cache; import okhttp3.OkHttpClient; @@ -47,24 +48,51 @@ public class OkHttpEngine implements HttpEngine { private byte[] mCachedData; public static class OkHttpFactory implements HttpEngine.Factory { - private final OkHttpClient mClient; + private final OkHttpClient.Builder mClientBuilder; public OkHttpFactory() { - mClient = new OkHttpClient(); + mClientBuilder = new OkHttpClient.Builder(); } /** * OkHttp cache implemented through {@link OkHttpClient.Builder#cache(Cache)}. */ public OkHttpFactory(Cache cache) { - mClient = new OkHttpClient.Builder() - .cache(cache) - .build(); + mClientBuilder = new OkHttpClient.Builder() + .cache(cache); + } + + /** + * Sets the default connect timeout for new connections. A value of 0 means no timeout, + * otherwise values must be between 1 and {@link Integer#MAX_VALUE} when converted to + * milliseconds. + */ + public OkHttpFactory connectTimeout(long timeout, TimeUnit unit) { + mClientBuilder.connectTimeout(timeout, unit); + return this; + } + + /** + * Sets the default read timeout for new connections. A value of 0 means no timeout, otherwise + * values must be between 1 and {@link Integer#MAX_VALUE} when converted to milliseconds. + */ + public OkHttpFactory readTimeout(long timeout, TimeUnit unit) { + mClientBuilder.readTimeout(timeout, unit); + return this; + } + + /** + * Sets the default write timeout for new connections. A value of 0 means no timeout, otherwise + * values must be between 1 and {@link Integer#MAX_VALUE} when converted to milliseconds. + */ + public OkHttpFactory writeTimeout(long timeout, TimeUnit unit) { + mClientBuilder.writeTimeout(timeout, unit); + return this; } @Override public HttpEngine create(UrlTileSource tileSource) { - return new OkHttpEngine(mClient, tileSource); + return new OkHttpEngine(mClientBuilder.build(), tileSource); } }