From e2bcbb117f2ac03196da34217671f1bc48395598 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kjetil=20=C3=98rbekk?= Date: Tue, 10 Apr 2012 19:04:05 +0200 Subject: Change in buffering. --- src/main/java/com/orbekk/protobuf/ConnectionHandler.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/main/java/com/orbekk/protobuf/ConnectionHandler.java') diff --git a/src/main/java/com/orbekk/protobuf/ConnectionHandler.java b/src/main/java/com/orbekk/protobuf/ConnectionHandler.java index d9bc6da..db5a582 100644 --- a/src/main/java/com/orbekk/protobuf/ConnectionHandler.java +++ b/src/main/java/com/orbekk/protobuf/ConnectionHandler.java @@ -4,6 +4,7 @@ import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.IOException; import java.net.Socket; +import java.util.LinkedList; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; @@ -45,13 +46,16 @@ public class ConnectionHandler { try { BufferedOutputStream output = new BufferedOutputStream( connection.getOutputStream()); + LinkedList buffer = + new LinkedList(); while (!connection.isClosed()) { - Data.Response response = dispatcherOutput.take(); - try { - response.writeDelimitedTo(connection.getOutputStream()); - } catch (IOException e) { - tryCloseConnection(); + buffer.clear(); + buffer.add(dispatcherOutput.take()); + dispatcherOutput.drainTo(buffer); + for (Data.Response response : buffer) { + response.writeDelimitedTo(output); } + output.flush(); } } catch (InterruptedException e) { tryCloseConnection(); -- cgit v1.2.3