On Jan 27, 2009, at 6:59 AM, Shawn Willden wrote: > It looks to me like the set of segments selected for download is > defined in the loop in _download_all_segments: > > for segnum in range(self._vup.num_segments): > d.addCallback(self._download_segment, segnum) > # this pause, at the end of write, prevents pre-fetch from > # happening until the consumer is ready for more data. > d.addCallback(self._check_for_pause) > return d > > Is it really as simple as restricting the range of this for loop?
Yes. Then of course we want to throw out parts of the segment that aren't in the requested range and just return the requested subset. Also of course we need to keep in mind the fact that this is changing the CiphertextDownloader to be invoked multiple times with successive get_range() methods instead of a single start() method. It isn't too complicated to make sure that any state which needs to be initialized exactly once is initialized exactly once. Heh heh heh! Now I see that Brian wrote a reply to your message saying that it is rather more complicated than this! I'm not sure why his and my opinion differ -- no doubt I've overlooked some details that Brian has remembered -- but also I think Brian described a larger project which refactors this code more and adds more features. I guess it is up to you to dive in and figure out just how hard it really is. ;-) Regards, Zooko --- Tahoe, the Least-Authority Filesystem -- http://allmydata.org store your data: $10/month -- http://allmydata.com/?tracking=zsig _______________________________________________ tahoe-dev mailing list [email protected] http://allmydata.org/cgi-bin/mailman/listinfo/tahoe-dev
