Usage of the SAForum AIS (Application Interface Specification) More...
#include "asterisk.h"#include <stdlib.h>#include <stdio.h>#include <string.h>#include <unistd.h>#include <errno.h>#include "ais.h"#include "asterisk/module.h"#include "asterisk/utils.h"#include "asterisk/cli.h"#include "asterisk/logger.h"
Go to the source code of this file.
Functions | |
| static char * | ais_clm_show_members (struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) |
| int | ast_ais_clm_load_module (void) |
| int | ast_ais_clm_unload_module (void) |
| ASTERISK_FILE_VERSION (__FILE__,"$Revision: 294535 $") | |
| static void | clm_node_get_cb (SaInvocationT invocation, const SaClmClusterNodeT *cluster_node, SaAisErrorT error) |
| static void | clm_track_cb (const SaClmClusterNotificationBufferT *notif_buffer, SaUint32T num_members, SaAisErrorT error) |
Variables | |
| static struct ast_cli_entry | ais_cli [] |
| static const SaClmCallbacksT | clm_callbacks |
| SaClmHandleT | clm_handle |
| static SaAisErrorT | clm_init_res |
Usage of the SAForum AIS (Application Interface Specification)
This file contains the code specific to the use of the CLM (Cluster Membership) Service.
Definition in file clm.c.
| static char* ais_clm_show_members | ( | struct ast_cli_entry * | e, |
| int | cmd, | ||
| struct ast_cli_args * | a | ||
| ) | [static] |
Definition at line 73 of file clm.c.
References ast_cli_args::argc, ast_cli_entry::args, ARRAY_LEN, ast_cli(), CLI_FAILURE, CLI_GENERATE, CLI_INIT, CLI_SHOWUSAGE, CLI_SUCCESS, clm_handle, ast_cli_entry::command, ast_cli_args::fd, and ast_cli_entry::usage.
{
int i;
SaClmClusterNotificationBufferT buf;
SaClmClusterNotificationT notif[64];
SaAisErrorT ais_res;
switch (cmd) {
case CLI_INIT:
e->command = "ais clm show members";
e->usage =
"Usage: ais clm show members\n"
" List members of the cluster using the CLM (Cluster Membership) service.\n";
return NULL;
case CLI_GENERATE:
return NULL; /* no completion */
}
if (a->argc != e->args)
return CLI_SHOWUSAGE;
buf.notification = notif;
buf.numberOfItems = ARRAY_LEN(notif);
ais_res = saClmClusterTrack(clm_handle, SA_TRACK_CURRENT, &buf);
if (ais_res != SA_AIS_OK) {
ast_cli(a->fd, "Error retrieving current cluster members.\n");
return CLI_FAILURE;
}
ast_cli(a->fd, "\n"
"=============================================================\n"
"=== Cluster Members =========================================\n"
"=============================================================\n"
"===\n");
for (i = 0; i < buf.numberOfItems; i++) {
SaClmClusterNodeT *node = &buf.notification[i].clusterNode;
ast_cli(a->fd, "=== ---------------------------------------------------------\n"
"=== Node Name: %s\n"
"=== ==> ID: 0x%x\n"
"=== ==> Address: %s\n"
"=== ==> Member: %s\n",
(char *) node->nodeName.value, (int) node->nodeId,
(char *) node->nodeAddress.value,
node->member ? "Yes" : "No");
ast_cli(a->fd, "=== ---------------------------------------------------------\n"
"===\n");
}
ast_cli(a->fd, "=============================================================\n"
"\n");
return CLI_SUCCESS;
}
| int ast_ais_clm_load_module | ( | void | ) |
Definition at line 136 of file clm.c.
References ais_err2str(), ais_version, ARRAY_LEN, ast_cli_register_multiple(), ast_log(), clm_callbacks, clm_handle, clm_init_res, and LOG_ERROR.
Referenced by load_module().
{
clm_init_res = saClmInitialize(&clm_handle, &clm_callbacks, &ais_version);
if (clm_init_res != SA_AIS_OK) {
ast_log(LOG_ERROR, "Could not initialize cluster membership service: %s\n",
ais_err2str(clm_init_res));
return -1;
}
ast_cli_register_multiple(ais_cli, ARRAY_LEN(ais_cli));
return 0;
}
| int ast_ais_clm_unload_module | ( | void | ) |
Definition at line 150 of file clm.c.
References ais_err2str(), ARRAY_LEN, ast_cli_unregister_multiple(), ast_log(), clm_handle, clm_init_res, and LOG_ERROR.
Referenced by load_module(), and unload_module().
{
SaAisErrorT ais_res;
if (clm_init_res != SA_AIS_OK) {
return 0;
}
ast_cli_unregister_multiple(ais_cli, ARRAY_LEN(ais_cli));
ais_res = saClmFinalize(clm_handle);
if (ais_res != SA_AIS_OK) {
ast_log(LOG_ERROR, "Problem stopping cluster membership service: %s\n",
ais_err2str(ais_res));
return -1;
}
return 0;
}
| ASTERISK_FILE_VERSION | ( | __FILE__ | , |
| "$Revision: 294535 $" | |||
| ) |
| static void clm_node_get_cb | ( | SaInvocationT | invocation, |
| const SaClmClusterNodeT * | cluster_node, | ||
| SaAisErrorT | error | ||
| ) | [static] |
| static void clm_track_cb | ( | const SaClmClusterNotificationBufferT * | notif_buffer, |
| SaUint32T | num_members, | ||
| SaAisErrorT | error | ||
| ) | [static] |
struct ast_cli_entry ais_cli[] [static] |
{
AST_CLI_DEFINE(ais_clm_show_members, "List current members of the cluster"),
}
const SaClmCallbacksT clm_callbacks [static] |
{
.saClmClusterNodeGetCallback = clm_node_get_cb,
.saClmClusterTrackCallback = clm_track_cb,
}
Definition at line 56 of file clm.c.
Referenced by ast_ais_clm_load_module().
| SaClmHandleT clm_handle |
Definition at line 48 of file clm.c.
Referenced by ais_clm_show_members(), ast_ais_clm_load_module(), ast_ais_clm_unload_module(), ast_event_cb(), and dispatch_thread_handler().
SaAisErrorT clm_init_res [static] |
Definition at line 49 of file clm.c.
Referenced by ast_ais_clm_load_module(), and ast_ais_clm_unload_module().