*/
SWITCH_DECLARE(switch_status_t) switch_loadable_module_load_module(char *dir, char *fname, switch_bool_t runtime, const char **err);
+/*!
+ \brief Check if a module is loaded
+ \param mod the module name
+ \return the status
+*/
+SWITCH_DECLARE(switch_status_t) switch_loadable_module_exists(const char *mod);
+
/*!
\brief Unoad a module
\param dir the directory where the module resides
}
+SWITCH_STANDARD_API(module_exists_function)
+{
+ if (!switch_strlen_zero(cmd)) {
+ if(switch_loadable_module_exists(cmd) == SWITCH_STATUS_SUCCESS) {
+ stream->write_function(stream, "true");
+ } else {
+ stream->write_function(stream, "false");
+
+ }
+ }
+
+ return SWITCH_STATUS_SUCCESS;
+}
+
+
SWITCH_STANDARD_API(url_encode_function)
{
char *reply = "";
SWITCH_ADD_API(commands_api_interface, "user_data", "find user data", user_data_function, "<user>@<domain> [var|param] <name>");
SWITCH_ADD_API(commands_api_interface, "url_encode", "url encode a string", url_encode_function, "<string>");
SWITCH_ADD_API(commands_api_interface, "url_decode", "url decode a string", url_decode_function, "<string>");
+ SWITCH_ADD_API(commands_api_interface, "module_exists", "check if module exists", module_exists_function, "<module>");
/* indicate that the module should continue to be loaded */
return SWITCH_STATUS_NOUNLOAD;
}
+SWITCH_DECLARE(switch_status_t) switch_loadable_module_exists(const char *mod)
+{
+ switch_status_t status;
+
+ if (switch_strlen_zero(mod)) {
+ return SWITCH_STATUS_FALSE;
+ }
+
+ switch_mutex_lock(loadable_modules.mutex);
+ if (switch_core_hash_find(loadable_modules.module_hash, mod)) {
+ status = SWITCH_STATUS_SUCCESS;
+ } else {
+ status = SWITCH_STATUS_FALSE;
+ }
+ switch_mutex_unlock(loadable_modules.mutex);
+ return status;
+}
SWITCH_DECLARE(switch_status_t) switch_loadable_module_unload_module(char *dir, char *fname, const char **err)
{