Oberon || Compiler & Tools || Library || Module Index || Search Engine


Ulm's Oberon System:
pons


NAME

pons - Persistent Oberon Name Service

SYNOPSIS

pons {-b bind-address port} {-B bind-address port} [-i intensity] [-r read-auth] [-s shutdown-auth] [-w write-auth] dbfile

DESCRIPTION

pons provides a persistent hierarchical structure of directories which can be temporarily used to insert objects and other hierarchies to allow remote objects to be found by paths in a shared name system (see Names). Please note the distinction: directories created within the hierarchy of pons remain persistent, connections to inserted nodes from other processes do not survive a restart of pons.

Persistent directories may be created from the command line using onsmkdir, interactively through nsh(1) or from within Oberon by using Names.MakeSubnode.

The persistent directory structure is stored using a container (see Containers and StandardContainers) that is based upon a safe storage using TransStreams on a regular file named dbfile. The database file dbfile will be created if it does not exist yet.

Note that database files based on StandardContainers and TransStreams contain holes causing the size returned by stat(2) to be much larger than the actual disk usage. These files must be copied with care (either compress them first, or use options like -sparse of star(1)). It is not safe, however, to copy a database file while pons is running.

pons supports the authorization scheme of Names. Initial permissions may be given through the options -r, -s, and -w when a new database is to be created. Afterwards, permissions can only be changed through operations of Names. Newly created directories inherit the set of permissions from their parent directory.

Following options are supported:

-b bind-address port
make the RemoteObjects address of the exported root available at the given address (a hostname or a dotted-decimal IPv4 address) at the given port number according to NamesBootService and IPv4NameSystems. Note that any number of addresses may be given. Usually, ``127.0.0.1 9880'' is given.
-B bind-address port
add this port to those ports used by RemoteObjects. By default an ephemeral port address is taken.
-i intensity
allows to set the intensity level for Storage.Intensity (see Storage). This allows to fine-tune the balance of memory usage vs CPU time by the garbage collection. By default, the intensity is 8. Lower intensity values reduce memory usage but cause CPU overhead by more frequent garbage collections. Higher intensity values cause more memory to be used while saving more CPU time. Please note however, that the address space can also be a significant limit, i.e. at high intensity values it is possible that no more address space is found by Memory.
-I
permit insertions even with read-only access authorization. Please note that this option is ignored if dbfile exists already.
-r read-auth
specifies a file containing a persistent pair of shards (of types Shards.Lid and Shards.Pot). If given, all read-only accesses must provide a lid that fits to the pot of read-auth. By default no authorization is required for read-only accesses. If this file does not exist yet, it is created and initialized with a pair of private shards (see PrivateShards). Please note that this option is ignored if dbfile exists already.
-s shutdown-auth
specifies a file containing a persistent pair of shards (of types Shards.Lid and Shards.Pot). Shutdown operations on the pons object in the root directory must provide a lid that fits to shutdown-auth. By default, shutdown-auth equals write-auth. If this file does not exist yet, it is created and initialized with a pair of private shards (see PrivateShards).
-w write-auth
specifies a file containing a persistent pair of shards (of types Shards.Lid and Shards.Pot). If given, all write-accesses must provide a lid that fits to the pot of write-auth. By default, write accesses are prohibited to everybody. If this file does not exist yet, it is created and initialized with a pair of private shards (see PrivateShards). Please note that this option is ignored if dbfile exists already.

pons may be terminated by sending SIGTERM or invoking onsshut for the control object named ``pons'' within the exported root.

SEE ALSO

PersistentNodes
the implementation of pons is based on this kind of persistent nodes
PrivateShards
default type of shards that is used for authorization.
Names
general abstraction for name hierarchies
onsshut
allows to shut down the pons service

Edited by: borchert, last change: 2005/02/10, revision: 1.3, converted to HTML: 2005/02/10

Oberon || Compiler & Tools || Library || Module Index || Search Engine