mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-07 10:28:32 +00:00
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 ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.0@133947 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -286,7 +286,7 @@ static enum ast_device_state devstate_cached(const char *device)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*! \brief Check device state through channel specific function or generic function */
|
/*! \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 *buf;
|
||||||
char *number;
|
char *number;
|
||||||
@@ -298,9 +298,12 @@ enum ast_device_state ast_device_state(const char *device)
|
|||||||
char *provider = NULL;
|
char *provider = NULL;
|
||||||
|
|
||||||
/* If the last known state is cached, just return that */
|
/* If the last known state is cached, just return that */
|
||||||
|
if (check_cache) {
|
||||||
res = devstate_cached(device);
|
res = devstate_cached(device);
|
||||||
if (res != AST_DEVICE_UNKNOWN)
|
if (res != AST_DEVICE_UNKNOWN) {
|
||||||
return res;
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
buf = ast_strdupa(device);
|
buf = ast_strdupa(device);
|
||||||
tech = strsep(&buf, "/");
|
tech = strsep(&buf, "/");
|
||||||
@@ -338,6 +341,14 @@ enum ast_device_state ast_device_state(const char *device)
|
|||||||
return res;
|
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 */
|
/*! \brief Add device state provider */
|
||||||
int ast_devstate_prov_add(const char *label, ast_devstate_prov_cb_type callback)
|
int ast_devstate_prov_add(const char *label, ast_devstate_prov_cb_type callback)
|
||||||
{
|
{
|
||||||
@@ -425,7 +436,7 @@ static void do_state_change(const char *device)
|
|||||||
{
|
{
|
||||||
enum ast_device_state state;
|
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));
|
ast_debug(3, "Changing state for %s - state %d (%s)\n", device, state, devstate2str(state));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user