Author: toad
Date: 2007-08-15 17:20:20 +0000 (Wed, 15 Aug 2007)
New Revision: 14703

Modified:
   trunk/freenet/src/freenet/node/fcp/FCPConnectionOutputHandler.java
Log:
FCP output: More buffering. Flush on idle and on exit.

Modified: trunk/freenet/src/freenet/node/fcp/FCPConnectionOutputHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/FCPConnectionOutputHandler.java  
2007-08-15 17:17:16 UTC (rev 14702)
+++ trunk/freenet/src/freenet/node/fcp/FCPConnectionOutputHandler.java  
2007-08-15 17:20:20 UTC (rev 14703)
@@ -3,6 +3,7 @@
  * http://www.gnu.org/ for further details of the GPL. */
 package freenet.node.fcp;

+import java.io.BufferedOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.LinkedList;
@@ -40,13 +41,14 @@
        }

        private void realRun() throws IOException {
-               OutputStream os = handler.sock.getOutputStream();
+               OutputStream os = new 
BufferedOutputStream(handler.sock.getOutputStream(), 4096);
                while(true) {
                        FCPMessage msg;
                        synchronized(outQueue) {
                                while(true) {
                                        if(outQueue.isEmpty()) {
                                                if(handler.isClosed()) return;
+                                               os.flush();
                                                try {
                                                        outQueue.wait(10000);
                                                } catch (InterruptedException 
e) {
@@ -59,7 +61,11 @@
                                }
                        }
                        msg.send(os);
-                       if(handler.isClosed()) return;
+                       if(handler.isClosed()) {
+                               os.flush();
+                               os.close();
+                               return;
+                       }
                }
        }



Reply via email to