loader: Add dependency fields to module structures.
[asterisk/asterisk.git] / res / res_chan_stats.c
index 0f39f07..dbc79f0 100644 (file)
@@ -34,8 +34,6 @@
 
 #include "asterisk.h"
 
-ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
-
 #include "asterisk/module.h"
 #include "asterisk/stasis_channels.h"
 #include "asterisk/stasis_message_router.h"
@@ -57,7 +55,7 @@ static struct stasis_message_router *router;
  * \param message The message itself.
  */
 static void statsmaker(void *data, struct stasis_subscription *sub,
-       struct stasis_topic *topic, struct stasis_message *message)
+       struct stasis_message *message)
 {
        RAII_VAR(struct ast_str *, metric, NULL, ast_free);
 
@@ -89,7 +87,7 @@ static void statsmaker(void *data, struct stasis_subscription *sub,
  * \param message The message itself.
  */
 static void updates(void *data, struct stasis_subscription *sub,
-       struct stasis_topic *topic, struct stasis_message *message)
+       struct stasis_message *message)
 {
        /* Since this came from a message router, we know the type of the
         * message. We can cast the data without checking its type.
@@ -111,7 +109,7 @@ static void updates(void *data, struct stasis_subscription *sub,
 
        if (!update->old_snapshot && update->new_snapshot) {
                /* Initial cache entry; count a channel creation */
-               ast_statsd_log("channels.count", AST_STATSD_COUNTER, 1);
+               ast_statsd_log_string("channels.count", AST_STATSD_GAUGE, "+1", 1.0);
        } else if (update->old_snapshot && !update->new_snapshot) {
                /* Cache entry removed. Compute the age of the channel and post
                 * that, as well as decrementing the channel count.
@@ -125,7 +123,7 @@ static void updates(void *data, struct stasis_subscription *sub,
                ast_statsd_log("channels.calltime", AST_STATSD_TIMER, age);
 
                /* And decrement the channel count */
-               ast_statsd_log("channels.count", AST_STATSD_COUNTER, -1);
+               ast_statsd_log_string("channels.count", AST_STATSD_GAUGE, "-1", 1.0);
        }
 }
 
@@ -139,7 +137,7 @@ static void updates(void *data, struct stasis_subscription *sub,
  * \param message The message itself.
  */
 static void default_route(void *data, struct stasis_subscription *sub,
-       struct stasis_topic *topic, struct stasis_message *message)
+       struct stasis_message *message)
 {
        if (stasis_subscription_final_message(sub, message)) {
                /* Much like with the regular subscription, you may need to
@@ -150,13 +148,22 @@ static void default_route(void *data, struct stasis_subscription *sub,
        }
 }
 
+static int unload_module(void)
+{
+       stasis_unsubscribe_and_join(sub);
+       sub = NULL;
+       stasis_message_router_unsubscribe_and_join(router);
+       router = NULL;
+       return 0;
+}
+
 static int load_module(void)
 {
        /* You can create a message router to route messages by type */
        router = stasis_message_router_create(
-               stasis_caching_get_topic(ast_channel_topic_all_cached()));
+               ast_channel_topic_all_cached());
        if (!router) {
-               return AST_MODULE_LOAD_FAILURE;
+               return AST_MODULE_LOAD_DECLINE;
        }
        stasis_message_router_add(router, stasis_cache_update_type(),
                updates, NULL);
@@ -165,22 +172,15 @@ static int load_module(void)
        /* Or a subscription to receive all of the messages from a topic */
        sub = stasis_subscribe(ast_channel_topic_all(), statsmaker, NULL);
        if (!sub) {
-               return AST_MODULE_LOAD_FAILURE;
+               unload_module();
+               return AST_MODULE_LOAD_DECLINE;
        }
        return AST_MODULE_LOAD_SUCCESS;
 }
 
-static int unload_module(void)
-{
-       stasis_unsubscribe_and_join(sub);
-       sub = NULL;
-       stasis_message_router_unsubscribe_and_join(router);
-       router = NULL;
-       return 0;
-}
-
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Example of how to use Stasis",
+       .support_level = AST_MODULE_SUPPORT_EXTENDED,
        .load = load_module,
        .unload = unload_module,
-       .nonoptreq = "res_statsd"
-       );
+       .requires = "res_statsd"
+);