aboutsummaryrefslogtreecommitdiffstats
path: root/include/asterisk/module.h
diff options
context:
space:
mode:
authorrizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b>2007-11-22 03:50:04 +0000
committerrizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b>2007-11-22 03:50:04 +0000
commite8a5f98fe802e750139dc614db4314f6363c088c (patch)
treeddeac0b6008d46b43319952a82f92548c81bac14 /include/asterisk/module.h
parent15e517d2ae308974f49c8a2e43a6bc5740b881bb (diff)
shuffle a little bit the content of header files to reduce dependencies.
In this commit: - move the ast_register/unregister_app functions to module.h to avoid the need to include pbx.h for the simpler apps; - move the ast_group structure to channel.h to remove the dependency of app.h on linkedlists.h Note, this is a long process that I am doing in small steps. The main difficulty is that now for each subsystem we have a single header (e.g. channel.h) included by the subsystem provider (usually one file, e.g. channel.c) and by its clients (dozens of them, e.g. we have some 70+ apps and 30+ functions). This requires the clients to include all the extra headers required by the provider (eg. lock.h, linkedlists.h, definitions of substructures...) even though many of the clients would be just happy with opaque struct declarations and function prototypes. The long term plan is to eventually rectify this structure so that the compilation can become faster, and also APIs are more stable. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89522 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'include/asterisk/module.h')
-rw-r--r--include/asterisk/module.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/include/asterisk/module.h b/include/asterisk/module.h
index 4091045f8..1b257ed15 100644
--- a/include/asterisk/module.h
+++ b/include/asterisk/module.h
@@ -370,6 +370,59 @@ static void __restore_globals(void)
)
#endif
+/*!
+ * \brief Register an application.
+ *
+ * \param app Short name of the application
+ * \param execute a function callback to execute the application. It should return
+ * non-zero if the channel needs to be hung up.
+ * \param synopsis a short description (one line synopsis) of the application
+ * \param description long description with all of the details about the use of
+ * the application
+ *
+ * This registers an application with Asterisk's internal application list.
+ * \note The individual applications themselves are responsible for registering and unregistering
+ * and unregistering their own CLI commands.
+ *
+ * \retval 0 success
+ * \retval -1 failure.
+ */
+#define ast_register_application(app, execute, synopsis, description) ast_register_application2(app, execute, synopsis, description, ast_module_info->self)
+
+/*!
+ * \brief Register an application.
+ *
+ * \param app Short name of the application
+ * \param execute a function callback to execute the application. It should return
+ * non-zero if the channel needs to be hung up.
+ * \param synopsis a short description (one line synopsis) of the application
+ * \param description long description with all of the details about the use of
+ * the application
+ * \param mod module this application belongs to
+ *
+ * This registers an application with Asterisk's internal application list.
+ * \note The individual applications themselves are responsible for registering and unregistering
+ * and unregistering their own CLI commands.
+ *
+ * \retval 0 success
+ * \retval -1 failure.
+ */
+int ast_register_application2(const char *app, int (*execute)(struct ast_channel *, void *),
+ const char *synopsis, const char *description, void *mod);
+
+/*!
+ * \brief Unregister an application
+ *
+ * \param app name of the application (does not have to be the same string as the one that was registered)
+ *
+ * This unregisters an application from Asterisk's internal application list.
+ *
+ * \retval 0 success
+ * \retval -1 failure
+ */
+int ast_unregister_application(const char *app);
+
+
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif