install_prereq: Add SUSE.
[asterisk/asterisk.git] / res / res_stasis_test.c
index 7b5aece..19d2a42 100644 (file)
@@ -17,7 +17,8 @@
  */
 
 /*!
- * \file \brief Test infrastructure for dealing with Stasis.
+ * \file
+ * \brief Test infrastructure for dealing with Stasis.
  *
  * \author David M. Lee, II <dlee@digium.com>
  */
 
 #include "asterisk.h"
 
-ASTERISK_FILE_VERSION(__FILE__, "$Revision$");
-
 #include "asterisk/astobj2.h"
 #include "asterisk/module.h"
 #include "asterisk/stasis_test.h"
 
-static struct stasis_message_type *test_message_type;
+STASIS_MESSAGE_TYPE_DEFN(stasis_test_message_type);
 
 static void stasis_message_sink_dtor(void *obj)
 {
@@ -103,8 +102,9 @@ struct stasis_message_sink *stasis_message_sink_create(void)
  * Why the roundabout way of exposing this via stasis_message_sink_cb()? Well,
  * it has to do with how we load modules.
  *
- * Modules have their own metadata compiled into them in the AST_MODULE_INFO()
- * block. This includes dependency information in the \c nonoptreq field.
+ * Modules have their own metadata compiled into them in the module info block
+ * at the end of the file.  This includes dependency information in the
+ * \c nonoptreq field.
  *
  * Asterisk loads the module, inspects the field, then loads any needed
  * dependencies. This works because Asterisk passes \c RTLD_LAZY to the initial
@@ -119,7 +119,7 @@ struct stasis_message_sink *stasis_message_sink_create(void)
  * the initial lazy binding will still work as expected.
  */
 static void message_sink_cb(void *data, struct stasis_subscription *sub,
-       struct stasis_topic *topic, struct stasis_message *message)
+       struct stasis_message *message)
 {
        struct stasis_message_sink *sink = data;
 
@@ -250,6 +250,10 @@ struct stasis_message *stasis_test_message_create(void)
 {
        RAII_VAR(void *, data, NULL, ao2_cleanup);
 
+       if (!stasis_test_message_type()) {
+               return NULL;
+       }
+
        /* We just need the unique pointer; don't care what's in it */
        data = ao2_alloc(1, NULL);
        if (!data) {
@@ -259,33 +263,24 @@ struct stasis_message *stasis_test_message_create(void)
        return stasis_message_create(stasis_test_message_type(), data);
 }
 
-struct stasis_message_type *stasis_test_message_type(void)
-{
-       return test_message_type;
-}
-
 static int unload_module(void)
 {
-       ao2_cleanup(test_message_type);
-       test_message_type = NULL;
+       STASIS_MESSAGE_TYPE_CLEANUP(stasis_test_message_type);
        return 0;
 }
 
 static int load_module(void)
 {
-       test_message_type = stasis_message_type_create(
-               "stasis_test_message");
-       if (!test_message_type) {
-               return AST_MODULE_LOAD_FAILURE;
+       if (STASIS_MESSAGE_TYPE_INIT(stasis_test_message_type) != 0) {
+               return AST_MODULE_LOAD_DECLINE;
        }
 
        return AST_MODULE_LOAD_SUCCESS;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY,
-       AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER,
-       "Stasis test utilities",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER, "Stasis test utilities",
+       .support_level = AST_MODULE_SUPPORT_CORE,
        .load = load_module,
        .unload = unload_module,
        .load_pri = AST_MODPRI_APP_DEPEND,
-       );
+);