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>