Please enter search query.
Search <book_title>...
InfoScale™ 9.0 Cluster Server Agent Developer's Guide - AIX, Linux, Solaris, Windows
Last Published:
2025-04-13
Product(s):
InfoScale & Storage Foundation (9.0)
Platform: AIX,Linux,Solaris,Windows
- Introduction
- Agent entry point overview
- About agent entry points
- Agent entry points described
- About the action entry point
- About the info entry point
- Considerations for using C++ or script entry points
- About the agent information file
- About the ArgList and ArgListValues attributes
- Creating entry points in C++
- About creating entry points in C++
- Syntax for C++ entry points
- Agent framework primitives
- Agent Framework primitives for container support
- Creating entry points in scripts
- About creating entry points in scripts
- Syntax for script entry points
- Agent framework primitives
- VCSAG_GET_ATTR_VALUE
- Agent Framework primitives with container support
- Example script entry points
- Logging agent messages
- Building a custom agent
- Building a script based IMF-aware custom agent
- Creating XML file required for AMF plugins to do resource registration for online and offline state monitoring
- Testing agents
- Static type attributes
- About static attributes
- Static type attribute definitions
- AdvDbg
- ArgList
- State transition diagram
- Internationalized messages
- Troubleshooting VCS resource's unexpected behavior using First Failure Data Capture (FFDC)
- Appendix A. Using pre-5.0 VCS agents
VCSAgSetCookie2
void *VCSAgSetCookie2(const char *name, void *cookie)
This primitive requests the agent framework to store a cookie given by the void *cookie parameter. If there is a value already associated with the cookie, the primitive sets the new value and atomically returns the old value. If there is no value associated with the cookie then it sets a new value in the cookie and returns NULL.
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(); VCSAgSetCookie2(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(); VCSAgSetCookie2(res_name, key); } // Use the key for testing if the resource is // online, and set the state accordingly. ... return state; }