# Persistent State Service

Points of contact: Priyanka Gontla

Last Update: 2002/07/29

Persistent State Service (PSS) describes a way of making a service persistent. The fact that PSS is being used by a service is known only to the service (server) and not to the client which makes use of the service. PSS presents persistent information as storage objects stored in storage homes, to quote the specification. The storage homes are the datastores where the persistent data is saved.

The specification introduced Persistent State Definition Language (PSDL), a superset of IDL with five new constructs. PSDL is used to specify the interface to the datastore. The PSDL file used in the application will define the types that might be saved in the datastore.

We have a compiler, psdl_tao, which is similar to the tao_idl compiler, which will process the psdl file and generate stubs that are used mainly for the insertion and extraction operations.

### Current status:

- The PSDL compiler understands and supports the simple types like
  `typdef, module, structures, interfaces.`

- The datastore for now is a regular file. The `libTAO_PSDL_Datastore` interfaces the datastore and helps write and read from the datastore. The data that is saved persistently is a hash map whose external id is TAO_PSDL_String, a wrapper around ACE_CString and the internal id is TAO_PSDL_OctetSeq, a wrapper around for CORBA::OctetSeq.

- There is an example in $TAO_ROOT/orbsvcs/examples/PSS which shows how the PSS can be used to make a simplified naming service persistent.

### Future work:

- Add support to the remaining types defined in PSDL.

- Use RMCast to have another form of persistency via data replication.

Back to TOC