Symantec logo

VCSAgGetCookie

void *VCSAgGetCookie(const char *name);

This primitive requests that the agent framework get the cookie set by an earlier call to VCSAgSetCookie(). It returns NULL if cookie was not previously set. 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;

}