On Fri, Nov 28, 2008 at 7:05 AM,  <toad at freenetproject.org> wrote:
> Author: toad
> Date: 2008-11-27 23:05:34 +0000 (Thu, 27 Nov 2008)
> New Revision: 23930
>
> Modified:
>   trunk/freenet/src/freenet/node/NodeDispatcher.java
>   trunk/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
> Log:
> Handle UOMRequestExtra

Why not pack freenet-ext.jar and freenet.jar in one tar file and
update them in one go?
This help many needless dependancy problem.
(file size may be a problem, but this is better then breaking due to
bad ext version)

>
> Modified: trunk/freenet/src/freenet/node/NodeDispatcher.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/NodeDispatcher.java  2008-11-27 22:58:18 
> UTC (rev 23929)
> +++ trunk/freenet/src/freenet/node/NodeDispatcher.java  2008-11-27 23:05:34 
> UTC (rev 23930)
> @@ -130,6 +130,8 @@
>                        return node.nodeUpdater.uom.handleSendingRevocation(m, 
> source);
>                } else if(spec == DMT.UOMRequestMain && 
> source.isRealConnection()) {
>                        return node.nodeUpdater.uom.handleRequestMain(m, 
> source);
> +               } else if(spec == DMT.UOMRequestExtra && 
> source.isRealConnection()) {
> +                       return node.nodeUpdater.uom.handleRequestExt(m, 
> source);
>                } else if(spec == DMT.UOMSendingMain && 
> source.isRealConnection()) {
>                        return node.nodeUpdater.uom.handleSendingMain(m, 
> source);
>                } else if(spec == DMT.FNPOpennetAnnounceRequest) {
>
> Modified: 
> trunk/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java    
>   2008-11-27 22:58:18 UTC (rev 23929)
> +++ trunk/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java    
>   2008-11-27 23:05:34 UTC (rev 23930)
> @@ -938,6 +938,99 @@
>                updateManager.node.clientCore.alerts.unregister(alert);
>        }
>
> +       public boolean handleRequestExt(Message m, final PeerNode source) {
> +               // Do we have the data?
> +
> +               int version = updateManager.newExtJarVersion();
> +               File data = updateManager.getExtBlob(version);
> +
> +               if(data == null) {
> +                       Logger.normal(this, "Peer " + source + " asked us for 
> the blob file for the ext jar but we don't have it!");
> +                       // Probably a race condition on reconnect, hopefully 
> we'll be asked again
> +                       return true;
> +               }
> +
> +               final long uid = m.getLong(DMT.UID);
> +
> +               RandomAccessFileWrapper raf;
> +               try {
> +                       raf = new RandomAccessFileWrapper(data, "r");
> +               } catch(FileNotFoundException e) {
> +                       Logger.error(this, "Peer " + source + " asked us for 
> the blob file for the ext jar, we have downloaded it but don't have the file 
> even though we did have it when we checked!: " + e, e);
> +                       return true;
> +               }
> +
> +               final PartiallyReceivedBulk prb;
> +               long length;
> +               try {
> +                       length = raf.size();
> +                       prb = new 
> PartiallyReceivedBulk(updateManager.node.getUSM(), length,
> +                               Node.PACKET_SIZE, raf, true);
> +               } catch(IOException e) {
> +                       Logger.error(this, "Peer " + source + " asked us for 
> the blob file for the ext jar, we have downloaded it but we can't determine 
> the file size: " + e, e);
> +                       return true;
> +               }
> +
> +               final BulkTransmitter bt;
> +               try {
> +                       bt = new BulkTransmitter(prb, source, uid, false, 
> updateManager.ctr);
> +               } catch(DisconnectedException e) {
> +                       Logger.error(this, "Peer " + source + " asked us for 
> the blob file for the ext jar, then disconnected: " + e, e);
> +                       return true;
> +               }
> +
> +               final Runnable r = new Runnable() {
> +
> +                       public void run() {
> +                               if(!bt.send())
> +                                       Logger.error(this, "Failed to send 
> ext jar blob to " + source.userToString() + " : " + bt.getCancelReason());
> +                               else
> +                                       Logger.normal(this, "Sent ext jar 
> blob to " + source.userToString());
> +                       }
> +               };
> +
> +               Message msg = DMT.createUOMSendingExtra(uid, length, 
> updateManager.updateURI.toString(), version);
> +
> +               try {
> +                       source.sendAsync(msg, new AsyncMessageCallback() {
> +
> +                               public void acknowledged() {
> +                                       if(logMINOR)
> +                                               Logger.minor(this, "Sending 
> data...");
> +                                       // Send the data
> +
> +                                       
> updateManager.node.executor.execute(r, "Ext jar send for " + uid + " to " + 
> source.userToString());
> +                               }
> +
> +                               public void disconnected() {
> +                                       // Argh
> +                                       Logger.error(this, "Peer " + source + 
> " asked us for the blob file for the ext jar, then disconnected when we tried 
> to send the UOMSendingMain");
> +                               }
> +
> +                               public void fatalError() {
> +                                       // Argh
> +                                       Logger.error(this, "Peer " + source + 
> " asked us for the blob file for the ext jar, then got a fatal error when we 
> tried to send the UOMSendingMain");
> +                               }
> +
> +                               public void sent() {
> +                                       if(logMINOR)
> +                                               Logger.minor(this, "Message 
> sent, data soon");
> +                               }
> +
> +                               @Override
> +                               public String toString() {
> +                                       return super.toString() + "(" + uid + 
> ":" + source.getPeer() + ")";
> +                               }
> +                       }, updateManager.ctr);
> +               } catch(NotConnectedException e) {
> +                       Logger.error(this, "Peer " + source + " asked us for 
> the blob file for the ext jar, then disconnected when we tried to send the 
> UOMSendingExt: " + e, e);
> +                       return true;
> +               }
> +
> +               return true;
> +
> +       }
> +
>        public boolean handleRequestMain(Message m, final PeerNode source) {
>                // Do we have the data?
>
>
> _______________________________________________
> cvs mailing list
> cvs at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs
>

Reply via email to