aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_amihooks.c
diff options
context:
space:
mode:
authordbrooks <dbrooks@f38db490-d61c-443f-a65b-d21fe96a405b>2009-11-06 22:07:22 +0000
committerdbrooks <dbrooks@f38db490-d61c-443f-a65b-d21fe96a405b>2009-11-06 22:07:22 +0000
commit95e8ab8d050e57ffb137be405cb8b886246ae9e1 (patch)
tree8d5c72cad1b485ae491217246fc7432cbac5603f /tests/test_amihooks.c
parentea202cf5c247b71f43eaca307c8f6649fe696579 (diff)
ami_testhooks.c automatically registers hook
ami_testhooks.c was registering for AMI events upon module load. Moved the registration to its own CLI command. Added CLI command for unregistering the hook. Changed some of the wording, removed unnecessary arguments/parameters. Reported by: rmudgett git-svn-id: http://svn.digium.com/svn/asterisk/trunk@228661 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'tests/test_amihooks.c')
-rw-r--r--tests/test_amihooks.c72
1 files changed, 63 insertions, 9 deletions
diff --git a/tests/test_amihooks.c b/tests/test_amihooks.c
index c4940ae98..2fd23a476 100644
--- a/tests/test_amihooks.c
+++ b/tests/test_amihooks.c
@@ -51,7 +51,7 @@ static struct manager_custom_hook test_hook = {
.helper = &amihook_helper,
};
-static int test_send(struct ast_cli_args *a) {
+static int hook_send(void) {
int res;
/* Send a test action (core show version) to the AMI */
@@ -60,19 +60,74 @@ static int test_send(struct ast_cli_args *a) {
return res;
}
-static char *handle_cli_amihook_test_send(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
+static void register_hook(void) {
+
+ /* Unregister the hook, we don't want a double-registration (Bad Things(tm) happen) */
+ ast_manager_unregister_hook(&test_hook);
+
+ /* Register the hook for AMI events */
+ ast_manager_register_hook(&test_hook);
+
+}
+
+static void unregister_hook(void) {
+
+ /* Unregister the hook */
+ ast_manager_unregister_hook(&test_hook);
+
+}
+
+static char *handle_cli_amihook_send(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
+{
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "amihook send";
+ e->usage = ""
+ "Usage: amihook send"
+ "";
+ return NULL;
+ case CLI_GENERATE:
+ return NULL;
+ case CLI_HANDLER:
+ hook_send();
+ return CLI_SUCCESS;
+ }
+
+ return CLI_FAILURE;
+}
+
+static char *handle_cli_amihook_register_hook(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
- e->command = "amihook send test";
+ e->command = "amihook register";
e->usage = ""
- "Usage: amihook send test"
+ "Usage: amihook register"
"";
return NULL;
case CLI_GENERATE:
return NULL;
case CLI_HANDLER:
- test_send(a);
+ register_hook();
+ return CLI_SUCCESS;
+ }
+
+ return CLI_FAILURE;
+}
+
+static char *handle_cli_amihook_unregister_hook(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
+{
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "amihook unregister";
+ e->usage = ""
+ "Usage: amihook unregister"
+ "";
+ return NULL;
+ case CLI_GENERATE:
+ return NULL;
+ case CLI_HANDLER:
+ unregister_hook();
return CLI_SUCCESS;
}
@@ -80,7 +135,9 @@ static char *handle_cli_amihook_test_send(struct ast_cli_entry *e, int cmd, stru
}
static struct ast_cli_entry cli_amihook_evt[] = {
- AST_CLI_DEFINE(handle_cli_amihook_test_send, "Test module for AMI hook"),
+ AST_CLI_DEFINE(handle_cli_amihook_send, "Send an AMI event"),
+ AST_CLI_DEFINE(handle_cli_amihook_register_hook, "Register module for AMI hook"),
+ AST_CLI_DEFINE(handle_cli_amihook_unregister_hook, "Unregister module for AMI hook"),
};
static int unload_module(void)
@@ -93,9 +150,6 @@ static int load_module(void)
{
int res;
- /* Register the hook for AMI events */
- ast_manager_register_hook(&test_hook);
-
res = ast_cli_register_multiple(cli_amihook_evt, ARRAY_LEN(cli_amihook_evt));
return res ? AST_MODULE_LOAD_DECLINE : AST_MODULE_LOAD_SUCCESS;