summaryrefslogtreecommitdiff
path: root/src/main/java/com/orbekk/protobuf/ConnectionHandler.java
diff options
context:
space:
mode:
authorKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-04-10 19:04:05 +0200
committerKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-04-10 19:04:05 +0200
commite2bcbb117f2ac03196da34217671f1bc48395598 (patch)
tree990f92f4271d3929fa4fcc12305c4a3fd3d58111 /src/main/java/com/orbekk/protobuf/ConnectionHandler.java
parentbb4dc8012467d47ed21a8fa1cf11fca27a1fafd7 (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.java14
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();