[asterisk-commits] russell: branch 1.6.0 r133947 - in /branches/1.6.0: ./ main/devicestate.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Sat Jul 26 10:17:46 CDT 2008


Author: russell
Date: Sat Jul 26 10:17:46 2008
New Revision: 133947

URL: http://svn.digium.com/view/asterisk?view=rev&rev=133947
Log:
Merged revisions 133945-133946 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/trunk

........
r133945 | russell | 2008-07-26 10:15:14 -0500 (Sat, 26 Jul 2008) | 6 lines

ast_device_state() gets called in two different ways.  The first way is when
called from elsewhere in Asterisk to find the current state of a device.  In
that case, we want to use the cached value if it exists.  The other way is when
processing a device state change.  In that case, we do not want to check the
cache because returning the last known state is counter productive.

........
r133946 | russell | 2008-07-26 10:16:20 -0500 (Sat, 26 Jul 2008) | 1 line

actually use the cache_cache argument
........

Modified:
    branches/1.6.0/   (props changed)
    branches/1.6.0/main/devicestate.c

Propchange: branches/1.6.0/
------------------------------------------------------------------------------
Binary property 'trunk-merged' - no diff available.

Modified: branches/1.6.0/main/devicestate.c
URL: http://svn.digium.com/view/asterisk/branches/1.6.0/main/devicestate.c?view=diff&rev=133947&r1=133946&r2=133947
==============================================================================
--- branches/1.6.0/main/devicestate.c (original)
+++ branches/1.6.0/main/devicestate.c Sat Jul 26 10:17:46 2008
@@ -286,7 +286,7 @@
 }
 
 /*! \brief Check device state through channel specific function or generic function */
-enum ast_device_state ast_device_state(const char *device)
+static enum ast_device_state _ast_device_state(const char *device, int check_cache)
 {
 	char *buf;
 	char *number;
@@ -298,9 +298,12 @@
 	char *provider = NULL;
 
 	/* If the last known state is cached, just return that */
-	res = devstate_cached(device);
-	if (res != AST_DEVICE_UNKNOWN)
-		return res;
+	if (check_cache) {
+		res = devstate_cached(device);
+		if (res != AST_DEVICE_UNKNOWN) {
+			return res;
+		}
+	}
 
 	buf = ast_strdupa(device);
 	tech = strsep(&buf, "/");
@@ -338,6 +341,14 @@
 	return res;
 }
 
+enum ast_device_state ast_device_state(const char *device)
+{
+	/* This function is called from elsewhere in the code to find out the
+	 * current state of a device.  Check the cache, first. */
+
+	return _ast_device_state(device, 1);
+}
+
 /*! \brief Add device state provider */
 int ast_devstate_prov_add(const char *label, ast_devstate_prov_cb_type callback)
 {
@@ -425,7 +436,7 @@
 {
 	enum ast_device_state state;
 
-	state = ast_device_state(device);
+	state = _ast_device_state(device, 0);
 
 	ast_debug(3, "Changing state for %s - state %d (%s)\n", device, state, devstate2str(state));
 




More information about the asterisk-commits mailing list