Author: toad
Date: 2007-10-24 18:30:32 +0000 (Wed, 24 Oct 2007)
New Revision: 15548

Modified:
   trunk/freenet/src/freenet/io/xfer/BulkTransmitter.java
   trunk/freenet/src/freenet/node/DarknetPeerNode.java
   trunk/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
Log:
Support sending a bulk transfer without necessarily expecting a response. Will 
use this for back compat in sending noderefs as bulk transfers.
Javadocs.

Modified: trunk/freenet/src/freenet/io/xfer/BulkTransmitter.java
===================================================================
--- trunk/freenet/src/freenet/io/xfer/BulkTransmitter.java      2007-10-24 
18:16:29 UTC (rev 15547)
+++ trunk/freenet/src/freenet/io/xfer/BulkTransmitter.java      2007-10-24 
18:30:32 UTC (rev 15548)
@@ -42,12 +42,24 @@
        private boolean sentCancel;
        private boolean finished;
        final int packetSize;
+       /** Not expecting a response? */
+       final boolean noWait;

-       public BulkTransmitter(PartiallyReceivedBulk prb, PeerContext peer, 
long uid, DoubleTokenBucket masterThrottle) throws DisconnectedException {
+       /**
+        * Create a bulk data transmitter.
+        * @param prb The PartiallyReceivedBulk containing the file we want to 
send, or the part of it that we have so far.
+        * @param peer The peer we want to send it to.
+        * @param uid The unique identifier for this data transfer
+        * @param masterThrottle The overall output throttle
+        * @param noWait If true, don't wait for an FNPBulkReceivedAll, return 
as soon as we've sent everything.
+        * @throws DisconnectedException If the peer we are trying to send to 
becomes disconnected.
+        */
+       public BulkTransmitter(PartiallyReceivedBulk prb, PeerContext peer, 
long uid, DoubleTokenBucket masterThrottle, boolean noWait) throws 
DisconnectedException {
                this.prb = prb;
                this.peer = peer;
                this.uid = uid;
                this.masterThrottle = masterThrottle;
+               this.noWait = noWait;
                peerBootID = peer.getBootID();
                // Need to sync on prb while doing both operations, to avoid 
race condition.
                // Specifically, we must not get calls to blockReceived() until 
blocksNotSentButPresent
@@ -167,6 +179,10 @@
                                blockNo = blocksNotSentButPresent.firstOne();
                        }
                        if(blockNo < 0) {
+                               if(noWait && prb.hasWholeFile()) {
+                                       completed();
+                                       return true;
+                               }
                                // Wait for a packet, BulkReceivedAll or 
BulkReceiveAborted
                                synchronized(this) {
                                        try {

Modified: trunk/freenet/src/freenet/node/DarknetPeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/DarknetPeerNode.java 2007-10-24 18:16:29 UTC 
(rev 15547)
+++ trunk/freenet/src/freenet/node/DarknetPeerNode.java 2007-10-24 18:30:32 UTC 
(rev 15548)
@@ -867,7 +867,7 @@

                public void send() throws DisconnectedException {
                        prb = new PartiallyReceivedBulk(node.usm, size, 
Node.PACKET_SIZE, data, true);
-                       transmitter = new BulkTransmitter(prb, 
DarknetPeerNode.this, uid, node.outputThrottle);
+                       transmitter = new BulkTransmitter(prb, 
DarknetPeerNode.this, uid, node.outputThrottle, false);
                        if(logMINOR)
                                Logger.minor(this, "Sending "+uid);
                        node.executor.execute(new Runnable() {

Modified: trunk/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
===================================================================
--- trunk/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java      
2007-10-24 18:16:29 UTC (rev 15547)
+++ trunk/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java      
2007-10-24 18:30:32 UTC (rev 15548)
@@ -505,7 +505,7 @@

                final BulkTransmitter bt;
                try {
-                       bt = new BulkTransmitter(prb, source, uid, 
updateManager.node.outputThrottle);
+                       bt = new BulkTransmitter(prb, source, uid, 
updateManager.node.outputThrottle, false);
                } catch (DisconnectedException e) {
                        Logger.error(this, "Peer "+source+" asked us for the 
blob file for the revocation key, then disconnected: "+e, e);
                        return true;
@@ -878,7 +878,7 @@

                final BulkTransmitter bt;
                try {
-                       bt = new BulkTransmitter(prb, source, uid, 
updateManager.node.outputThrottle);
+                       bt = new BulkTransmitter(prb, source, uid, 
updateManager.node.outputThrottle, false);
                } catch (DisconnectedException e) {
                        Logger.error(this, "Peer "+source+" asked us for the 
blob file for the main jar, then disconnected: "+e, e);
                        return true;


Reply via email to