stasher — a distributed object repository


stasher — a distributed object repository
Features, and a brief overview
Security model
Installation, and requirements
I. Managing the object repository cluster
1. Setting up a new cluster (with one, initial, node)
Create a cluster certificate
Create a node certificate
Contents of the cluster node directory
Install the node certificate directory
Start the first node's server process
Define the first node's configuration
Specify who should get the logs mailed to them
2. Adding a node to an existing cluster
Synchronize the server clocks using NTP
Create a certificate for a new cluster node
Starting the server on a new node
Connect to the existing cluster, and define the new node's connection parameters
3. Removing a node from a cluster
4. Renewing a node certificate
5. Generating a new cluster certificate
6. Rebooting a node
distreboot - reboot all servers in an object repository cluster
7. Halting an entire cluster
II. stasher C++ library API
8. Synchronous API
A simple C++ client: getting and modifying objects
stasher::client->get(): get objects from the repository
stasher::client->put(): update objects in the repository
stasher::client->getdir(): enumerate objects in the repository
stasher::client->subscribe(): object subscriptions
The updated() callback
stasher::client->subscribeserverstatus(): server status reports
9. Asynchronous API
What asynchronous C++ API methods can and cannot do
stasher::client->get_request(): asynchronous version of get()
stasher::client->put_request(): asynchronous version of put()
stasher::process_request() template function
Other stasher::client->name_request()s
10. Asynchronous connection manager
General notes about managed objects and subscriptions
stasher::manager->manage_subscription(): a managed subscription
stasher::manager->manage_object(): automatically retrieve an object any time it changes
stasher::manager->manage_hierarchymonitor(): maintaining an internal snapshot of an object hierarchy
stasher::manager->manage_serverstatusupdates(): maintaining server status updates
11. Serializing and deserializing the current value of an object
stasher::create_manage_object<classptr>(): call a functor after deserializing an object
stasher::currentbaseObj<classptr>: virtual superclass for stasher::create_manage_object()'s functors
stasher::current<classptr>, stasher::currentptr<classptr>: a basic stasher::currentBaseObj subclass
12. Versioned current objects and updates
stasher::versionedptr<classptr>: associate a mcguffin with each object instance
Versioned current objects
Using version mcguffings
stasher::versioned_put: updating multiple versioned objects
stasher::versionscollected: a container for current object version mcguffins
Using stasher::versioned_put()
13. Heartbeat objects
Application identifiers and status template parameters
Instantiating a heartbeat class
Heartbeat updates
A heartbeat example
The contents of a stasher::heartbeat object
III. Command Documentation
stashermg — Object repository management
stasher — Interactive object repository client — Perl extension for Stasher
A. Porting and compatibility notes