Merge "astobj2: Create function to copy weak proxied objects from container."
[asterisk/asterisk.git] / rest-api-templates / res_ari_resource.c.mustache
index ca4e2f1..85948fb 100644 (file)
@@ -40,6 +40,9 @@
        <depend type="module">res_ari</depend>
        <depend type="module">res_ari_model</depend>
        <depend type="module">res_stasis</depend>
+{{#requires_modules}}
+       <depend type="module">{{.}}</depend>
+{{/requires_modules}}
        <support_level>core</support_level>
  ***/
 
@@ -52,7 +55,7 @@
 #if defined(AST_DEVMODE)
 #include "ari/ari_model_validators.h"
 #endif
-{{^has_websocket}}
+{{#has_websocket}}
 {{! Only include http_websocket if necessary. Otherwise we'll do a lot of
  *  unnecessary optional_api intialization, which makes optional_api harder
  *  to debug
@@ -263,26 +266,28 @@ static int unload_module(void)
 {{#has_websocket}}
        ao2_cleanup({{full_name}}.ws_server);
        {{full_name}}.ws_server = NULL;
+       ast_ari_websocket_events_event_websocket_dtor();
 {{/has_websocket}}
 {{/apis}}
-       stasis_app_unref();
        return 0;
 }
 
 static int load_module(void)
 {
        int res = 0;
+
 {{#apis}}
 {{#operations}}
-{{#has_websocket}}
+{{#is_websocket}}
        struct ast_websocket_protocol *protocol;
 
        if (ast_ari_websocket_{{c_name}}_{{c_nickname}}_init() == -1) {
-               return AST_MODULE_LOAD_FAILURE;
+               return AST_MODULE_LOAD_DECLINE;
        }
 
        {{full_name}}.ws_server = ast_websocket_server_create();
        if (!{{full_name}}.ws_server) {
+               ast_ari_websocket_events_event_websocket_dtor();
                return AST_MODULE_LOAD_DECLINE;
        }
 
@@ -290,17 +295,16 @@ static int load_module(void)
        if (!protocol) {
                ao2_ref({{full_name}}.ws_server, -1);
                {{full_name}}.ws_server = NULL;
+               ast_ari_websocket_events_event_websocket_dtor();
                return AST_MODULE_LOAD_DECLINE;
        }
        protocol->session_attempted = ast_ari_{{c_name}}_{{c_nickname}}_ws_attempted_cb;
        protocol->session_established = ast_ari_{{c_name}}_{{c_nickname}}_ws_established_cb;
-{{/has_websocket}}
-{{#is_websocket}}
        res |= ast_websocket_server_add_protocol2({{full_name}}.ws_server, protocol);
 {{/is_websocket}}
 {{/operations}}
 {{/apis}}
-       stasis_app_ref();
+
        res |= ast_ari_add_handler(&{{root_full_name}});
        if (res) {
                unload_module();
@@ -314,6 +318,6 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - {{{
        .support_level = AST_MODULE_SUPPORT_CORE,
        .load = load_module,
        .unload = unload_module,
-       .nonoptreq = "res_ari,res_stasis",
+       .requires = "res_ari,res_ari_model,res_stasis{{#requires_modules}},{{.}}{{/requires_modules}}",
 );
 {{/api_declaration}}