void VCSAgSetCookie(const char *name, void *cookie);
This primitive requests the agent framework to store a cookie. This value, which is transparent to the agent framework, can be obtained by calling the primitive VCSAgGetCookie()
. A cookie is not stored permanently. It is lost when the agent process exits. This primitive can be called from any entry point. For example:
// Assume that the online, offline, and monitor
// operations on resource require a certain key. Also
// assume that obtaining this key is time consuming, but
// that it can be reused until this process is
// In this example, the open entry point obtains the key
// and stores it as a cookie. Subsequent online,
// offline, and monitor entry points get the cookie and
// Note that the cookie name can be any unique string.
// This example uses the resource name as the cookie
void res_open(const char *res_name, void **attr_val) {
if (VCSAgGetCookie(res_name) == NULL) {
VCSAgSetCookie(res_name, key);
VCSAgResState res_monitor(const char *res_name, void
**attr_val, int *conf_level_ptr) {
VCSAgResState state = VCSAgResUnknown;
void *key = VCSAgGetCookie(res_name);
// Take care of the rare cases when
// the open entry point failed to
// obtain the key and set the the cookie.
VCSAgSetCookie(res_name, key);
// Use the key for testing if the resource is
// online, and set the state accordingly.