[Freeswitch-svn] [commit] r8984 - in freeswitch/trunk/src: . include mod/applications/mod_commands

Freeswitch SVN brian at freeswitch.org
Thu Jul 10 10:41:31 EDT 2008


Author: brian
Date: Thu Jul 10 10:41:31 2008
New Revision: 8984

Modified:
   freeswitch/trunk/src/include/switch_loadable_module.h
   freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c
   freeswitch/trunk/src/switch_loadable_module.c

Log:
add module_exists api call

Modified: freeswitch/trunk/src/include/switch_loadable_module.h
==============================================================================
--- freeswitch/trunk/src/include/switch_loadable_module.h	(original)
+++ freeswitch/trunk/src/include/switch_loadable_module.h	Thu Jul 10 10:41:31 2008
@@ -242,6 +242,13 @@
 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
   \param fname the file name of the module

Modified: freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c	Thu Jul 10 10:41:31 2008
@@ -196,6 +196,21 @@
 	
 }
 
+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 = "";
@@ -2431,6 +2446,7 @@
 	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;

Modified: freeswitch/trunk/src/switch_loadable_module.c
==============================================================================
--- freeswitch/trunk/src/switch_loadable_module.c	(original)
+++ freeswitch/trunk/src/switch_loadable_module.c	Thu Jul 10 10:41:31 2008
@@ -830,7 +830,24 @@
 
 }
 
+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)
 {



More information about the Freeswitch-svn mailing list