Symantec logo

VCSAgSetCookie

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:

#include "VCSAgApi.h"

...

// 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

// terminated.

//

// 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

// use the key.

//

// Note that the cookie name can be any unique string.

// This example uses the resource name as the cookie

// name.

//

void *get_key() {

...

}

void res_open(const char *res_name, void **attr_val) {

if (VCSAgGetCookie(res_name) == NULL) {

void *key = get_key();

VCSAgSetCookie(res_name, key);

}

}

VCSAgResState res_monitor(const char *res_name, void

**attr_val, int *conf_level_ptr) {

VCSAgResState state = VCSAgResUnknown;

*conf_level_ptr = 0;

void *key = VCSAgGetCookie(res_name);

if (key == NULL) {

// Take care of the rare cases when

// the open entry point failed to

// obtain the key and set the the cookie.

key = get_key();

VCSAgSetCookie(res_name, key);

}

// Use the key for testing if the resource is

// online, and set the state accordingly.

...

return state;

}