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>

Reply via email to