> > You're only mentioning the low-level stream parts here, but is > > there any previous work of a filesystem/virtual folder API apart > > from POSIX which could be used as a comparision? > > > > Do you know what win32, OS/X, Java, .NET, etc provide in this area? > > I like the java.io.File class which does the pathname abstraction. > Win32 has something called "Shell extensions" which are similar to > the whole VFS layer. Other than that there is not a lot of previous > art.
I have a few years of experience with a commercial VFS implementation from Verity [1]. I won't go into details (it is actually way too complicated) but it kind of works like this: Backends can provide one of a few APIs. The one I find most usefull is the streaming API. Streams are not necessarily identified by filenames, any type of string can be used (and in some way it gets mapped to a backend which knows how to interpret it). Then you open a stream using this you specify which metadata you are interested in. There are some standard stuff you can add to a bitfield (author, filename, mimetype etc), but you can also specify custom fields which are often specific to the backend. Everything is then transfered as packages, containing either one metadata item or a chunk of the contents. You can request seeks of the stream but they might be denied, delayed or inexact (and the only way to tell is by the offset in the coming chunks). It can also have backends which take input streams (which can be used to access files in an archive or to convert files on the fly). (I guess this is also kind of similar to GStreamer, but less advenced since GStreamer can do a lot more like can relink the stream dynamically.) The good thing is that it's very flexible. Things are usually done in the most efficient way. But the user of the API must take on a lot of the responsibility so it's all but a beautiful thing. [1] http://www.verity.com/ _______________________________________________ gnome-vfs-list mailing list gnome-vfs-list@gnome.org http://mail.gnome.org/mailman/listinfo/gnome-vfs-list