On Friday 28 November 2008 01:11, Daniel Cheng wrote:
> 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)

Because most of the time we only need to update the main jar ?
> 
> >
> > 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
> >
> _______________________________________________
> Devl mailing list
> Devl at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl
> 
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: not available
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20081128/b6fc3f6f/attachment.pgp>

Reply via email to