On Wed, Jun 18, 2008 at 6:27 PM, Matthew Toseland <toad at amphibian.dyndns.org> wrote: > On Wednesday 18 June 2008 06:49, Daniel Cheng wrote: >> On Wed, Jun 18, 2008 at 6:17 AM, <toad at freenetproject.org> wrote: >> > Author: toad >> > Date: 2008-06-17 22:17:59 +0000 (Tue, 17 Jun 2008) >> > New Revision: 20419 >> > >> [...] >> > Added: branches/db4o/freenet/src/freenet/client/async/USKFetcherTag.java >> > =================================================================== >> > --- branches/db4o/freenet/src/freenet/client/async/USKFetcherTag.java > (rev 0) >> > +++ branches/db4o/freenet/src/freenet/client/async/USKFetcherTag.java > 2008-06-17 22:17:59 UTC (rev 20419) >> > @@ -0,0 +1,114 @@ >> > +package freenet.client.async; >> > + >> > +import com.db4o.ObjectContainer; >> > + >> > +import freenet.client.FetchContext; >> > +import freenet.keys.USK; >> > +import freenet.node.RequestClient; >> > + >> > +/** >> > + * Not the actual fetcher. Just a tag associating a USK with the client > that should be called when >> > + * the fetch has been done. Can be included in persistent requests. On > startup, all USK fetches are >> > + * restarted, but this remains the same: the actual USKFetcher's are > always transient. >> > + * @author toad >> > + */ >> > +class USKFetcherTag implements ClientGetState, USKFetcherCallback { >> > + >> > + /** For persistence */ >> > + public final long nodeDBHandle; >> > + /** The callback */ >> > + public final USKFetcherCallback callback; >> [...] >> > + transient USKFetcher fetcher; >> >> Mark "callback" as transient too? >> Or does it matter? > > No, callback has to be persistent. The USKFetcher is recreated each startup, > the callback is the link to the persistent request or insert that started it. >
Let's see who implements USKFetcherCallback ... : public class USKInserter implements .... USKFetcherCallback { : .... : private USKFetcher fetcher So we are pulling USKFetcher in if we persist the whole graph. How many level of depth do we persists ?