diff options
author | Kjetil Ørbekk <kjetil.orbekk@gmail.com> | 2012-04-10 19:04:05 +0200 |
---|---|---|
committer | Kjetil Ørbekk <kjetil.orbekk@gmail.com> | 2012-04-10 19:04:05 +0200 |
commit | e2bcbb117f2ac03196da34217671f1bc48395598 (patch) | |
tree | 990f92f4271d3929fa4fcc12305c4a3fd3d58111 /src/main/java/com/orbekk/protobuf/ConnectionHandler.java | |
parent | bb4dc8012467d47ed21a8fa1cf11fca27a1fafd7 (diff) |
Change in buffering.
Diffstat (limited to 'src/main/java/com/orbekk/protobuf/ConnectionHandler.java')
-rw-r--r-- | src/main/java/com/orbekk/protobuf/ConnectionHandler.java | 14 |
1 files changed, 9 insertions, 5 deletions
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<Data.Response> buffer = + new LinkedList<Data.Response>(); 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(); |