The following example shows how to build the FileOnOff agent using your own VCSAgStartup function, the C++ version of the monitor entry point, and script versions of online and offline entry points. This example implements the VCSAgStartup, online, offline, and monitor entry points only.
To implement the agent using VCSAgStartup, C++, and script entry points
mkdir /opt/VRTSvcs/src/agent/FileOnOff
cp -r /opt/VRTSvcs/src/agent/Sample/* /opt/VRTSvcs/src/agent/FileOnOff
cd /opt/VRTSvcs/src/agent/FileOnOff
// Description: This functions registers the entry points // void VCSAgStartup() { VCSAG_LOG_INIT("VCSAgStartup"); VCSAgSetLogCategory(10051); VCSAgInitEntryPointStruct(V51); VCSAgValidateAndSetEntryPoint(VCSAgEPMonitor, res_monitor); }
// Function: res_monitor // Description: Determine if the given file is online (file exists) // or offline (file does not exist). VCSAgResState res_monitor(const char *res_name, void **attr_val, int *conf_level) { int ret = 0; char *pathname = NULL; struct stat64 stat_buf; VCSAgResState state = VCSAgResUnknown; VCSAG_LOG_INIT("res_monitor"); /* * Get PathName attribute form attr_val parameter, passed to res_offline function and store * under pathname variable. * */ if (NULL == pathname) { return VCSAgResUnknown; } VCSAG_LOGDBG_MSG(VCS_DBG2, VCS_DEFAULT_FLAGS, "Checking if file %s exists or not", pathname); if (0 == stat64(pathname, &stat_buf)) { /* * If the pathname is a directory, return status as unknown */ if (S_ISDIR(stat_buf.st_mode) != 0) { VCSAG_LOG_MSG(VCS_ERROR, 2004, VCS_DEFAULT_FLAGS, "%s is a directory", pathname); VCSAG_CONSOLE_LOG_MSG(VCS_ERROR, 2004, VCS_DEFAULT_FLAGS, "%s is a directory", pathname); *conf_level = 0; return VCSAgResUnknown; } *conf_level = 100; return VCSAgResOnline; } *conf_level = 0; return VCSAgResOffline; }
make
mkdir /opt/VRTSvcs/bin/FileOnOff