[asterisk-commits] oej: branch oej/statechange-7816 r48145 - /team/oej/statechange-7816/

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Thu Nov 30 10:59:59 MST 2006


Author: oej
Date: Thu Nov 30 11:59:59 2006
New Revision: 48145

URL: http://svn.digium.com/view/asterisk?view=rev&rev=48145
Log:
Adding debug logging 

Modified:
    team/oej/statechange-7816/devicestate.c

Modified: team/oej/statechange-7816/devicestate.c
URL: http://svn.digium.com/view/asterisk/team/oej/statechange-7816/devicestate.c?view=diff&rev=48145&r1=48144&r2=48145
==============================================================================
--- team/oej/statechange-7816/devicestate.c (original)
+++ team/oej/statechange-7816/devicestate.c Thu Nov 30 11:59:59 2006
@@ -62,8 +62,11 @@
 
 struct state_change {
 	AST_LIST_ENTRY(state_change) list;
+	int id;
 	char device[1];
 };
+
+int changeid = 0;	/*! Temporary counter */
 
 static AST_LIST_HEAD_STATIC(state_changes, state_change);
 
@@ -203,13 +206,17 @@
 	tmp = strrchr(device, '-');
 	if (tmp)
 		*tmp = '\0';
-	if (change_thread != AST_PTHREADT_NULL)
+	if (change_thread != AST_PTHREADT_NULL) {
 		change = calloc(1, sizeof(*change) + strlen(device));
+		change->id = ++changeid;
+	}
+
 
 	if (!change) {
 		/* we could not allocate a change struct, or */
 		/* there is no background thread, so process the change now */
 		do_state_change(device);
+		ast_log(LOG_DEBUG, "::: Devicestate ::: DIRECT Changing state for device %s\n", device);
 	} else {
 		/* queue the change */
 		strcpy(change->device, device);
@@ -219,6 +226,7 @@
 			/* the list was empty, signal the thread */
 			ast_cond_signal(&change_pending);
 		AST_LIST_UNLOCK(&state_changes);
+		ast_log(LOG_DEBUG, "::: Devicestate ::: QUEUED state change for device %s - qid %d\n", device, change->id);
 	}
 
 	return 1;
@@ -255,12 +263,14 @@
 		if (cur) {
 			/* we got an entry, so unlock the list while we process it */
 			AST_LIST_UNLOCK(&state_changes);
+			ast_log(LOG_DEBUG, "::: Devicestate ::: PROCESSING queued state change for device %s - id %d\n", cur->device, cur->id);
 			do_state_change(cur->device);
 			free(cur);
 			AST_LIST_LOCK(&state_changes);
 		} else {
 			/* there was no entry, so atomically unlock the list and wait for
 			   the condition to be signalled (returns with the lock held) */
+			ast_log(LOG_DEBUG, "::: Devicestate ::: Thread going into wait state, pending future changes. zzzzzzzzzzzzzz\n");
 			ast_cond_wait(&change_pending, &state_changes.lock);
 		}
 	}
@@ -276,6 +286,7 @@
 		ast_log(LOG_ERROR, "Unable to start device state change thread.\n");
 		return -1;
 	}
+	ast_log(LOG_DEBUG, "::: Devicestate ::: Devicestate thread launched successfully. Ready for a changing time!!!\n");
 
 	return 0;
 }



More information about the asterisk-commits mailing list