[Freeswitch-svn] [commit] r13953 - freeswitch/trunk/src/mod/event_handlers/mod_event_multicast

FreeSWITCH SVN andrew at freeswitch.org
Thu Jun 25 10:23:31 PDT 2009


Author: andrew
Date: Thu Jun 25 12:23:31 2009
New Revision: 13953

Log:
Add a little api command to show multicast peer status


Modified:
   freeswitch/trunk/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c

Modified: freeswitch/trunk/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c
==============================================================================
--- freeswitch/trunk/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c	(original)
+++ freeswitch/trunk/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c	Thu Jun 25 12:23:31 2009
@@ -225,7 +225,7 @@
 		switch_core_hash_destroy(&globals.event_hash);
 		globals.event_hash = NULL;
 		switch_core_hash_init(&globals.event_hash, module_pool);
-		memset(globals.event_list, 0, SWITCH_EVENT_ALL);
+		memset(globals.event_list, 0, SWITCH_EVENT_ALL + 1);
 		if (load_config() != SWITCH_STATUS_SUCCESS) {
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Failed to reload config file\n");
 		} else {
@@ -337,9 +337,36 @@
 	return;
 }
 
+SWITCH_STANDARD_API(multicast_peers)
+{
+	switch_hash_index_t *cur;
+	switch_ssize_t keylen;
+	const void *key;
+	void *value;
+	int now = switch_epoch_time_now(NULL);
+	struct peer_status *last;
+	char *host;
+	int i = 0;
+
+	for (cur = switch_hash_first(NULL, globals.peer_hash); cur; cur = switch_hash_next(cur)) {
+		switch_hash_this(cur, &key, &keylen, &value);
+		host = (char*) key;
+		last = (struct peer_status*) value;
+
+		stream->write_function(stream, "Peer %s %s; last seen %d seconds ago\n", host, last->active ? "UP" : "DOWN", now - last->lastseen);
+		i++;
+	}
+
+	if (i == 0) {
+		stream->write_function(stream, "No multicast peers seen\n");
+	}
+
+	return SWITCH_STATUS_SUCCESS;
+}
 
 SWITCH_MODULE_LOAD_FUNCTION(mod_event_multicast_load)
 {
+	switch_api_interface_t *api_interface;
 	switch_ssize_t hlen = -1;
 
 	memset(&globals, 0, sizeof(globals));
@@ -419,6 +446,9 @@
 
 	switch_socket_opt_set(globals.udp_socket, SWITCH_SO_NONBLOCK, TRUE);
 
+
+	SWITCH_ADD_API(api_interface, "multicast_peers", "Show status of multicast peers", multicast_peers, "");
+
 	/* indicate that the module should continue to be loaded */
 	return SWITCH_STATUS_SUCCESS;
 }



More information about the Freeswitch-svn mailing list