Contributed Software- Virtual File System
cache of http://www.hpl.hp.com/personal/Alan_Karp/espeak/version3.14/ContributedSoftware_A-03-14-00.pdf. It's a snapshot of the page taken as our search engine crawled the Web.
The web site itself may have changed. You can check the current page or check for previous versions at the Internet Archive.
Yahoo! is not affiliated with the authors of this page or responsible for its content.
Contributed Software- Virtual File System
Contributed Software-
Virtual File System
Release A.03.14.00
August 2001
COPYRIGHT NOTICE
© 2001 HEWLETT-PACKARD COMPANY
This document is provided "AS IS" WITH NO EXPRESS OR IMPLIED WARRANTY. Permission to copy,
modify, and distribute this document for any purpose is granted without fee, provided that the above
copyright notice and this notice appear in all copies, and that the name of Hewlett-Packard Company
is not used in advertising or publicity pertaining to distribution of this document without specific,
written prior permission. Hewlett-Packard Company makes no representations about the suitability of
this document for any purpose.
Windows and Windows NT are registered trademarks of Microsoft Corporation. Java and all Java-
based marks are trademarks or registered trademarks of Sun Microsystems, Inc. Linux is a trademark
of Linus Torvalds. All other trademarks are the properties of their respective owners.
Release A.03.14.00, August 2001
i
Contents
Chapter 1
Virtual File System . . . . . . . . . . . . . . . . . . . . . . . . . 1
Overview of VFS concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Using VFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
File Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Container Factory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Configuring and Running VFS . . . . . . . . . . . . . . . . . . . . . . . . . 9
FileStore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Container Factory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
VFSShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
VFS Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
VFS Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Design of the Command Line Interface . . . . . . . . . . . . . 15
Design and implementation of the file and file store ab-
stractions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Attributes for each object . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
File store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Workspace, Cabinet, Folder & File . . . . . . . . . . . . . . . . 22
Source code files and their purpose . . . . . . . . . . . . . . . . . . . 23
ii
Release A.03.14.00, August 2001
vfs.browser package . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
vfs.clientapi package . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
vfs.intf package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
vfs.properties package . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
vfs.server package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
vfs.shell package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
vfs.util package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Programmers Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Release A.03.14.00, August 2001
1
Chapter 1
Virtual File System
VFS is a Virtual File System that is built upon the e-speak infrastructure. VFS
provides the ability to create and manage file objects (henceforth referred to as
files) that are maintained somewhere in the e-speak environment. The files exist on
some device in the Internet, however, just like with a web URL, the user doesn't
really care what device hosts the file - he or she just wants to be able to access it.
VFS files are stored hierarchically; each user has a workspace consisting of one or
more cabinets. Each cabinet contains folders, which can hold other folders or
individual files.
Where VFS extends beyond a typical file system is in its use of the unique features
of e-speak. For example: the virtual folder hierarchy is unique to each user. Just as
a web browser maintains its own list of bookmarks, each user is able to build their
own hierarchy of files that are of interest to that user, and each user can refer to a
file by what ever name is meaningful to them. They are not bound to a name that is
common to all users.
VFS allows the user to create a workspace of cabinets that contain the folders and
files that interest them. This workspace is unique to each user and is available to
the user from any computer connected to the e-speak infrastructure. So unlike a
web browser, e-speak allows you to take all of your file references with you when
you change locations.
Users can share their cabinets with other users. For example, a provider could
create a cabinet containing recipes and share this cabinet with other users.
Someone using this service could create their own cabinet containing only those
recipes that they like (using the browser application, the consumer could drag and
drop the recipes from the providers cabinet to their own cabinet). If the provider
updates a recipe (say, they change one of the ingredients), the consumer
automatically sees this update the next time they access the recipe.
VFS was created to exercise the e-speak client library and core software. It is not
intended to be a complete product. It attempts to exploit all the features of e-speak
and, in doing so, provide a complete test application of the e-speak features.
Overview of VFS concepts
Virtual File System
2
R e l e a se A . 0 3 . 1 4 . 0 0 , A u g u s t 2 0 0 1
SFS is an extension of VFS that allows the client to manage files based on attributes
the client finds interesting such as the type of file, the creator of the file or the
contents of the file. A client can define his/her own vocabulary and assign values to
the attributes in that vocabulary and then structure the file system based on those
attributes.
Overview of VFS concepts
The following graphic depicts the objects embodied by VFS and their relationship
to each other.
Figure 1
Relationship of VFS components
As can be seen in
Figure 1
, everything starts with the workspace. The workspace
contains one or more cabinets. Each cabinet contains one or more folders. Each
folder can contain other folders and/or files. A file can be referenced from more
than one folder, or can be referenced from no folders. Each file is managed by one
file store, but there is no relationship between file stores and folders or cabinets.
A cabinet contains a reference to the default file store to simplify the creating of
new files, but there is no policy that requires all files in a cabinet to be stored in the
same file store.
Each of the components are described in more detail below:
FileStore
FileStore
WorkSpace
Cabinet
Cabinet
Folder
Folder
Folder
Folder
File
File
File
File
File
R e l e a s e A . 0 3 . 1 4 . 0 0 , August 2001
3
Virtual File System
Overview of VFS concepts
Workspace
The workspace is associated with a user. It is analogous to the desktop metaphor of
the Windows environment. The workspace is a named resource (typically with the
user ID of the creator) and is discoverable to re-establish the previously saved
environment. The workspace contains a list of Cabinets and provides the APIs
necessary to manipulate these Cabinets. The workspace is also the anchor point for
connecting to e-speak.
Workspaces are implemented using the ESFolder feature of e-speak.
Cabinet
The cabinet is used to collect folders and files. Much like an office file cabinet, it
typically contains similar objects. Cabinets are also named and can be discovered.
Cabinets can only contain folders and provide the APIs necessary to manipulate
these folders.
Cabinets also contain a view (implemented using the Repository View feature of e-
speak). This view is essentially a flattening of the folder and file hierarchy into a
single list of files. A file can be contained in the view and not represented in the
folder hierarchy of the cabinet. In this way, files can be added to the cabinet with
no hierarchy required. (Note: This feature is currently not implemented)
Cabinets are implemented using the ESFolder and ESView features of e-speak.
Folder
The folder is used to hold other folders and files. Much like an office folder, it
typically contains related objects