Per last week's discussions, I have created a set of new simplified
API's for the registry. These include:
1. orte_gpr.put_1 and orte_gpr.put_N: these allow you to put data on
the registry without having to define your own value structures. They
take a segment name, a NULL-terminated array of string tokens that
define the registry container (can just be NULL, which will put the
specified values in every container on that segment), a string key, a
data type, and a value_union containing the data iself. In the case
of put_N, these last three are arrays of those items so you can put
multiple data values in a single container.
2. orte_gpr.subscribe_1 and orte_gpr.subscribe_N: similar
functionality as the above, only for defining subscriptions. You can
also provide the name of a trigger to which you want to attach, and
the name to be used for the subscription (so that other processes can
attach to it).
3. orte_gpr.define_trigger: a way to quickly define a trigger that
can subsequently be used by subscription commands.
You can find examples of how to use these commands in
trunk/test/mca/gpr - look at the gpr_quick_put.c and
gpr_quick_triggers.c files. In addition, I will be convering the
trunk/orte/mca/rmgr/rmgr_base_stage_gate.c functions to use these new
API's as another example for people to use - hope to have that
checked in later tonight. I'll be adding documentation to the gpr.h
file to explain the API's as well, but that might take another day or
so to complete.
These have been tested now, so feel free to use them.