Previous  |  Next  >  
Product: Cluster Server Guides   
Manual: Cluster Server 4.1 Agent Developer's Guide   

VCSAgGetCookie


 void *VCSAgGetCookie(const char *name);

This primitive requests that the VCS 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;
 }


 ^ Return to Top Previous  |  Next  >  
Product: Cluster Server Guides  
Manual: Cluster Server 4.1 Agent Developer's Guide  
VERITAS Software Corporation
www.veritas.com