Author: toad
Date: 2009-04-18 18:08:30 +0000 (Sat, 18 Apr 2009)
New Revision: 27003

Modified:
   trunk/freenet/src/freenet/client/async/USKManager.java
Log:
Two hintUpdate() methods for applications such as Freetalk/WoT that might get 
non-authoritative hints to edition numbers.


Modified: trunk/freenet/src/freenet/client/async/USKManager.java
===================================================================
--- trunk/freenet/src/freenet/client/async/USKManager.java      2009-04-18 
18:00:47 UTC (rev 27002)
+++ trunk/freenet/src/freenet/client/async/USKManager.java      2009-04-18 
18:08:30 UTC (rev 27003)
@@ -3,6 +3,7 @@
  * http://www.gnu.org/ for further details of the GPL. */
 package freenet.client.async;
 
+import java.net.MalformedURLException;
 import java.util.HashMap;
 import java.util.Vector;
 
@@ -126,7 +127,43 @@
        public USKFetcherTag getFetcherForInsertDontSchedule(USK usk, short 
prioClass, USKFetcherCallback cb, RequestClient client, ObjectContainer 
container, ClientContext context, boolean persistent) {
                return getFetcher(usk, persistent ? new 
FetchContext(backgroundFetchContext, FetchContext.IDENTICAL_MASK, false, null) 
: backgroundFetchContext, true, client.persistent(), cb, true, container, 
context);
        }
+       
+       /**
+        * A non-authoritative hint that a specific edition *might* exist. At 
the moment,
+        * we just fetch the block. We do not fetch the contents, and it is 
possible that
+        * USKFetcher's are also fetching the block.
+        * @param usk
+        * @param edition
+        * @param context
+        */
+       public void hintUpdate(USK usk, long edition, ClientContext context) {
+               if(edition < lookupLatestSlot(usk)) return;
+               FreenetURI uri = usk.copy(edition).getURI();
+               final ClientGetter get = new ClientGetter(new 
NullClientCallback(), uri, new FetchContext(backgroundFetchContext, 
FetchContext.IDENTICAL_MASK, false, null), 
RequestStarter.UPDATE_PRIORITY_CLASS, USKManager.this, new NullBucket(), null);
+               try {
+                       get.start(null, context);
+               } catch (FetchException e) {
+                       // Ignore
+               }
+       }
 
+       /**
+        * A non-authoritative hint that a specific edition *might* exist. At 
the moment,
+        * we just fetch the block. We do not fetch the contents, and it is 
possible that
+        * USKFetcher's are also fetching the block.
+        * @param context
+        * @throws MalformedURLException If the uri passed in is not a USK.
+        */
+       public void hintUpdate(FreenetURI uri, ClientContext context) throws 
MalformedURLException {
+               if(uri.getSuggestedEdition() < 
lookupLatestSlot(USK.create(uri))) return;
+               final ClientGetter get = new ClientGetter(new 
NullClientCallback(), uri, new FetchContext(backgroundFetchContext, 
FetchContext.IDENTICAL_MASK, false, null), 
RequestStarter.UPDATE_PRIORITY_CLASS, USKManager.this, new NullBucket(), null);
+               try {
+                       get.start(null, context);
+               } catch (FetchException e) {
+                       // Ignore
+               }
+       }
+
        public void startTemporaryBackgroundFetcher(USK usk, ClientContext 
context, final FetchContext fctx, boolean prefetchContent) {
                USK clear = usk.clearCopy();
                USKFetcher sched = null;

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to