res_pjsip_keepalive: Add runtime configurable keepalive module for connection-oriente...
[asterisk/asterisk.git] / res / res_stasis_answer.c
1 /*
2  * Asterisk -- An open source telephony toolkit.
3  *
4  * Copyright (C) 2013, Digium, Inc.
5  *
6  * David M. Lee, II <dlee@digium.com>
7  *
8  * See http://www.asterisk.org for more information about
9  * the Asterisk project. Please do not directly contact
10  * any of the maintainers of this project for assistance;
11  * the project provides a web site, mailing lists and IRC
12  * channels for your use.
13  *
14  * This program is free software, distributed under the terms of
15  * the GNU General Public License Version 2. See the LICENSE file
16  * at the top of the source tree.
17  */
18
19 /*! \file
20  *
21  * \brief Stasis application control support.
22  *
23  * \author David M. Lee, II <dlee@digium.com>
24  */
25
26 /*** MODULEINFO
27         <depend type="module">res_stasis</depend>
28         <support_level>core</support_level>
29  ***/
30
31 #include "asterisk.h"
32
33 ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
34
35 #include "asterisk/module.h"
36 #include "asterisk/stasis_app_impl.h"
37
38 static int app_control_answer(struct stasis_app_control *control,
39         struct ast_channel *chan, void *data)
40 {
41         ast_debug(3, "%s: Answering\n",
42                 stasis_app_control_get_channel_id(control));
43         return ast_raw_answer(chan);
44 }
45
46 int stasis_app_control_answer(struct stasis_app_control *control)
47 {
48         int retval;
49
50         ast_debug(3, "%s: Sending answer command\n",
51                 stasis_app_control_get_channel_id(control));
52
53         retval = stasis_app_send_command(control, app_control_answer, NULL, NULL);
54
55         if (retval != 0) {
56                 ast_log(LOG_WARNING, "%s: Failed to answer channel\n",
57                         stasis_app_control_get_channel_id(control));
58                 return -1;
59         }
60
61         return 0;
62 }
63
64 static int load_module(void)
65 {
66         return AST_MODULE_LOAD_SUCCESS;
67 }
68
69 static int unload_module(void)
70 {
71         return 0;
72 }
73
74 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "Stasis application answer support",
75         .support_level = AST_MODULE_SUPPORT_CORE,
76         .load = load_module,
77         .unload = unload_module,
78         .nonoptreq = "res_stasis");