Here is the remaining problem: CHK's names are optional and mutable.
The same file can be: CHK at xyz,abc/ CHK at xyz,abc/linux-2.6.0.tar.bz2 CHK at xyz,abc/penguins.jpeg CHK at xyz,abc/GPL.txt Now, if we use / for "enter container/manifest", there is a major ambiguity problem above! One option would be to not allow this; if people want to give CHK's names, they should do so on creating them. These are then fixed. (You simply have a metadata manifest with only one element in it). Given that // is just ugly, and both tools and people can be expected to be repelled by it, I think it is worth the hassle. It does not change performance, as a sub-32K CHK will usually have a redirect for the content type, and a super-32K CHK will always have a splitfile manifest; we are adding a small number of bytes to the size of the control document. It does mean that users would no longer be able to arbitrarily change CHK filenames. Arguably that's a good thing. SSK names are also optional, but I doubt there will be any serious objections to making them mandatory. On Wed, Oct 26, 2005 at 07:07:07PM +0100, Matthew Toseland wrote: > Proposal: > > We abolish double slashes. > > When a container is first accessed, it is fully unpacked into cache, > including its .metadata. If the container does not include a .metadata, > we generate one. This allows users to do, for example, > CHK at .../freenet-20060718.tgz/lib/freenet-ext.jar without having to > insert a metadata redirect (there are of course size limits). > > The cache is a set of ephemerally encrypted, padded files. The files, > including the metadata, are kept individually in an LRU. > > A metadata manifest is a metadata document which is a map of names to > metadata documents. The latter can be container-internal redirects, > which refer to a file inside the container; they can be redirects to any > URI; they can be splitfiles, and particularly they can be manifests. > > Any and all access to files, even archive manifests (aka containers) > occurs via metadata manifests. Metadata manifests are "directories". > > So: > > SSK at blah,blah/WhateverFlog/images/war/bomb.jpeg > > => > Fetch SSK at blah,blah/WhateverFlog > Is a splitfile, and a tar.bz2 manifest. > Need the metadata; not in cache; fetch the splitfile; unpack into cache. > Extract the metadata. > Find "images" - is a manifest. > Find "war" - is a manifest. > Find "bomb.jpeg" - is "images/war/bomb.jpeg" inside the tar.bz2, is > image/jpeg. > Extract it, return it to the user. > -- > Matthew J Toseland - toad at amphibian.dyndns.org > Freenet Project Official Codemonkey - http://freenetproject.org/ > ICTHUS - Nothing is impossible. Our Boss says so. > _______________________________________________ > Devl mailing list > Devl at freenetproject.org > http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl -- Matthew J Toseland - toad at amphibian.dyndns.org Freenet Project Official Codemonkey - http://freenetproject.org/ ICTHUS - Nothing is impossible. Our Boss says so. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 189 bytes Desc: Digital signature URL: <https://emu.freenetproject.org/pipermail/devl/attachments/20051028/370173e7/attachment.pgp>