Asterisk - The Open Source Telephony Project  21.4.1
Macros | Functions | Variables
test_amihooks.c File Reference

Test AMI hook. More...

#include "asterisk.h"
#include "asterisk/module.h"
#include "asterisk/cli.h"
#include "asterisk/utils.h"
#include "asterisk/manager.h"
#include "asterisk/test.h"

Go to the source code of this file.

Macros

#define CATEGORY   "/main/amihooks/"
 

Functions

static void __reg_module (void)
 
static void __unreg_module (void)
 
static int amihook_helper (int category, const char *event, char *content)
 
struct ast_moduleAST_MODULE_SELF_SYM (void)
 
 AST_TEST_DEFINE (amihook_cli_send)
 
static char * handle_cli_amihook_register_hook (struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 
static char * handle_cli_amihook_send (struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 
static char * handle_cli_amihook_unregister_hook (struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 
static int hook_send (void)
 
static int load_module (void)
 
static void register_hook (void)
 
static int unload_module (void)
 
static void unregister_hook (void)
 
static int wait_for_hook (struct ast_test *test)
 

Variables

static struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "AMI Hook Test Module" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = AST_BUILDOPT_SUM, .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_DEFAULT, .support_level = AST_MODULE_SUPPORT_CORE, }
 
static const struct ast_module_infoast_module_info = &__mod_info
 
static struct ast_cli_entry cli_amihook_evt []
 
int done
 
ast_cond_t hook_cond
 
static ast_mutex_t hook_lock = { PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP , NULL, {1, 0} }
 
static struct manager_custom_hook test_hook
 

Detailed Description

Test AMI hook.

Author
David Brooks dbroo.nosp@m.ks@d.nosp@m.igium.nosp@m..com based off of code written by Russell Bryant russe.nosp@m.ll@d.nosp@m.igium.nosp@m..com

This started, and continues to serves, as an example illustrating the ability for a custom module to hook into AMI. Registration for AMI events and sending of AMI actions is shown. A test has also been created that utilizes the original example in order to make sure the ami event hook gets raised.

Definition in file test_amihooks.c.

Variable Documentation

struct ast_cli_entry cli_amihook_evt[]
static
Initial value:
= {
{ .handler = handle_cli_amihook_send , .summary = "Send an AMI event" ,},
{ .handler = handle_cli_amihook_register_hook , .summary = "Register module for AMI hook" ,},
{ .handler = handle_cli_amihook_unregister_hook , .summary = "Unregister module for AMI hook" ,},
}

Definition at line 194 of file test_amihooks.c.

struct manager_custom_hook test_hook
static
Initial value:
= {
.file = __FILE__,
.helper = &amihook_helper,
}

Definition at line 106 of file test_amihooks.c.