From bf86e5f2daa49da25c91fe3aaa92faaf50d60e0c Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 7 Dec 2018 11:43:21 +0100 Subject: [server] NanoHTTPD: Use chunked transfer, Increase queue size --- .../src/main/java/fi/iki/elonen/NanoHTTPD.java | 28 +++++++++++++++------- 1 file changed, 19 insertions(+), 9 deletions(-) (limited to 'dozentenmodulserver/src') diff --git a/dozentenmodulserver/src/main/java/fi/iki/elonen/NanoHTTPD.java b/dozentenmodulserver/src/main/java/fi/iki/elonen/NanoHTTPD.java index 5b865384..238dca10 100644 --- a/dozentenmodulserver/src/main/java/fi/iki/elonen/NanoHTTPD.java +++ b/dozentenmodulserver/src/main/java/fi/iki/elonen/NanoHTTPD.java @@ -460,7 +460,7 @@ public abstract class NanoHTTPD implements Runnable { */ public static class DefaultAsyncRunner implements AsyncRunner { private ExecutorService pool = new GrowingThreadPoolExecutor(2, 16, 1, TimeUnit.MINUTES, - new ArrayBlockingQueue(4), new PrioThreadFactory("httpd", Thread.NORM_PRIORITY)); + new ArrayBlockingQueue(16), new PrioThreadFactory("httpd", Thread.NORM_PRIORITY)); @Override public void exec(Runnable code) { @@ -511,23 +511,33 @@ public abstract class NanoHTTPD implements Runnable { /** * Basic constructor. */ - public Response(IStatus status, String mimeType, InputStream data) { + public Response(IStatus status, String mimeType, InputStream data, boolean chunked) { this.status = status; this.mimeType = mimeType; this.data = data; + this.chunkedTransfer = chunked; + } + + /** + * Basic constructor. Enable chunked transfer for everything + * except ByteArrayInputStream. + */ + public Response(IStatus status, String mimeType, InputStream data) { + this(status, mimeType, data, !(data instanceof ByteArrayInputStream)); + } + + /** + * Convenience method that makes an InputStream out of given byte array. + */ + public Response(IStatus status, String mimeType, byte[] data) { + this(status, mimeType, data == null ? null : new ByteArrayInputStream(data)); } /** * Convenience method that makes an InputStream out of given text. */ public Response(IStatus status, String mimeType, String txt) { - this.status = status; - this.mimeType = mimeType; - try { - this.data = txt != null ? new ByteArrayInputStream(txt.getBytes("UTF-8")) : null; - } catch (java.io.UnsupportedEncodingException uee) { - uee.printStackTrace(); - } + this(status, mimeType, txt == null ? null : txt.getBytes(StandardCharsets.UTF_8)); } /** -- cgit v1.2.3-55-g7522