summaryrefslogtreecommitdiff
path: root/main/devicestate.c
AgeCommit message (Collapse)Author
2008-11-04Slightly optimize ast_devstate_str and rename global functions devstate2str ↵Tilghman Lesher
and config_text_file_save to have an ast_ prefix git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@154260 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-07-26actually use the cache_cache argumentRussell Bryant
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@133946 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-07-26ast_device_state() gets called in two different ways. The first way is whenRussell Bryant
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. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@133945 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-07-26Re-work comment about how device state changes are processed to be a bit ↵Russell Bryant
more clear git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@133943 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-07-26Remove the code that decided when device state changes should be cached or not.Russell Bryant
It is no longer needed. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@133941 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-07-25Deprecate *_device_state_* APIs in favor of *_devstate_* APIsTilghman Lesher
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@133860 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-07-25Merged revisions 133649 via svnmerge from Tilghman Lesher
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r133649 | tilghman | 2008-07-25 12:19:39 -0500 (Fri, 25 Jul 2008) | 8 lines Fix some errant device states by making the devicestate API more strict in terms of the device argument (only without the unique identifier appended). (closes issue #12771) Reported by: davidw Patches: 20080717__bug12771.diff.txt uploaded by Corydon76 (license 14) Tested by: davidw, jvandal, murf ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@133665 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-07-25When the ast_device_state() function is called to retrieve device state, andRussell Bryant
the code checks to see if there is a cached state available, use the aggregate cached state across all servers, and not just the local state. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@133566 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-10Merge another big set of changes from team/russell/eventsRussell Bryant
This commit merges in the rest of the code needed to support distributed device state. There are two main parts to this commit. Core changes: - The device state handling in the core has been updated to understand device state across a cluster of Asterisk servers. Every time the state of a device changes, it looks at all of the device states on each node, and determines the aggregate device state. That resulting device state is what is provided to modules in Asterisk that take actions based on the state of a device. New module, res_ais: - A module has been written to facilitate the communication of events between nodes in a cluster of Asterisk servers. This module uses the SAForum AIS (Service Availability Forum Application Interface Specification) CLM and EVT services (Cluster Management and Event) to handle this task. This module currently supports sharing Voicemail MWI (Message Waiting Indication) and device state events between servers. It has been tested with openais, though other implementations of the spec do exist. For more information on testing distributed device state, see the following doc: - doc/distributed_devstate.txt git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@121559 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-10Merge another change from team/russell/eventsRussell Bryant
This commit breaks out some logic from pbx.c into a simple API. The hint processing code had logic for taking the state from multiple devices and turning that into the state for a single extension. So, I broke this out and made an API that lets you take multiple device states and determine the aggregate device state. I needed this for some core device state changes to support distributed device state. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@121501 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-05Merged revisions 96644 via svnmerge from Russell Bryant
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r96644 | russell | 2008-01-04 20:09:19 -0600 (Fri, 04 Jan 2008) | 2 lines Don't pass an empty string as the device name. ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@96645 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-04Merged revisions 96575 via svnmerge from Tilghman Lesher
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r96575 | tilghman | 2008-01-04 17:03:40 -0600 (Fri, 04 Jan 2008) | 7 lines Fix the problem of notification of a device state change to a device with a '-' in the name. Could probably do with a better fix in trunk, but this bug has been open way too long without a better solution. Reported by: stevedavies Patch by: tilghman (Closes issue #9668) ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@96576 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-21remove a bunch of useless #include "options.h"Luigi Rizzo
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89511 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-20move internal function declarations to include/asterisk/_private.hLuigi Rizzo
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89465 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-19another bunch of include removals (errno.h and asterisk/logger.h)Luigi Rizzo
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89425 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-16Start untangling header inclusion in a way that does not affectLuigi Rizzo
build times - tested, there is no measureable difference before and after this commit. In this change: use asterisk/compat.h to include a small set of system headers: inttypes.h, unistd.h, stddef.h, stddint.h, sys/types.h, stdarg.h, stdlib.h, alloca.h, stdio.h Where available, the inclusion is conditional on HAVE_FOO_H as determined by autoconf. Normally, source files should not include any of the above system headers, and instead use either "asterisk.h" or "asterisk/compat.h" which does it better. For the time being I have left alone second-level directories (main/db1-ast, etc.). git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89333 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-08improve linked-list macros in two ways:Kevin P. Fleming
- the *_CURRENT macros no longer need the list head pointer argument - add AST_LIST_MOVE_CURRENT to encapsulate the remove/add operation when moving entries between lists git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89106 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-10Merge a set of device state improvements from team/russell/events.Russell Bryant
The way a device state change propagates is kind of silly, in my opinion. A device state provider calls a function that indicates that the state of a device has changed. Then, another thread goes back and calls a callback for the device state provider to find out what the new state is before it can go send it off to whoever cares. I have changed it so that you can include the state that the device has changed to in the first function call from the device state provider. This removes the need to have to call the callback, which locks up critical containers to go find out what the state changed to. This change set changes the "simple" device state providers to use the new method. This includes parking, meetme, and SLA. I have also mostly converted chan_agent in my branch, but still have some more things to think through before presenting the plan for converting channel drivers to ensure all of the right events get generated ... git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@79027 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-23(closes issue #10271)Russell Bryant
Reported by: snuffy Patches: doxygen-updates.diff uploaded by snuffy (license 35) Another big batch of doxygen documentation updates git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@76559 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-14Add a massive set of changes for converting to use the ast_debug() macro.Russell Bryant
(issue #9957, patches from mvanbaak, caio1982, critch, and dimas) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@69327 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-07Fix a bunch of doxygen errors and document more thingsRussell Bryant
(issue #9842, snuffy) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@68339 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-06Issue 9869 - replace malloc and memset with ast_calloc, and other coding ↵Tilghman Lesher
guidelines changes git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@67864 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-06Merged revisions 67594 via svnmerge from Joshua Colp
https://origsvn.digium.com/svn/asterisk/branches/1.4 ................ r67594 | file | 2007-06-06 08:20:27 -0400 (Wed, 06 Jun 2007) | 10 lines Merged revisions 67593 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r67593 | file | 2007-06-06 08:18:36 -0400 (Wed, 06 Jun 2007) | 2 lines Revert channel name splitting fix for Zap. The moral of the story is don't use - in your user/peer names. (issue #9668 reported by stevedavies) ........ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@67595 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-01Merge major changes to the way device state is passed around Asterisk. The twoRussell Bryant
places that cared about device states were app_queue and the hint code in pbx.c. The changes include converting it to use the Asterisk event system, as well as other efficiency improvements. * app_queue: This module used to register a callback into devicestate.c to monitor device state changes. Now, it is just a subscriber to Asterisk events with the type, device state. * pbx.c hints: Previously, the device state processing thread in devicestate.c would call ast_hint_state_changed() each time the state of a device changed. Then, that code would go looking for all the hints that monitor that device, and call their callbacks. All of this blocked the device state processing thread. Now, the hint code is a subscriber of Asterisk events with the type, device state. Furthermore, when this code receives a device state change event, it queues it up to be processed by another thread so that it doesn't block one of the event processing threads. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@66958 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-05-23Fix a couple minor spelling mistakes.Russell Bryant
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@65573 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-05-14Merged revisions 64276 via svnmerge from Joshua Colp
https://origsvn.digium.com/svn/asterisk/branches/1.4 ................ r64276 | file | 2007-05-14 14:36:34 -0400 (Mon, 14 May 2007) | 10 lines Merged revisions 64275 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r64275 | file | 2007-05-14 14:34:06 -0400 (Mon, 14 May 2007) | 2 lines Only perform stripping of - strings from the channel name for Zap channels. Anywhere else we might remove a legitimate part of a device name. (issue #9668 reported by stevedavies) ........ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@64277 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-02-13This introduces a new dialplan function, DEVSTATE, which allows you to do someRussell Bryant
pretty cool things. First, you can get the device state of anything in the dialplan: NoOp(SIP/mypeer has state ${DEVSTATE(SIP/mypeer)}) NoOp(The conference room 1234 has state ${DEVSTATE(MeetMe:1234)}) Most importantly, this allows you to create custom device states so you can control phone lamps directly from the dialplan. Set(DEVSTATE(Custom:mycustomlamp)=BUSY) ... exten => mycustomlamp,hint,Custom:mycustomlamp git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@54261 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-02-02Clean up ast_device_state. It's pretty now!Joshua Colp
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@53113 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-02-02Switch the devicestate thread to operate the same way as the logging thread. ↵Joshua Colp
Pops all entries off the list to be processed, resets the list back to a clean state, and processes each entry. The thread won't have to acquire the list lock again until it checks to see if there are more to process. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@53112 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-02-02Read/write lockify the devicestate stuff a bit.Joshua Colp
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@53111 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-01-23Cosmetic changes. Make main source files better conform to coding guidelines ↵Joshua Colp
and standards. (issue #8679 reported by johann8384) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@51486 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-11-30Documentation updatesOlle Johansson
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@48164 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-11-30Small updateOlle Johansson
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@48150 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-11-30Doxygen updatesOlle Johansson
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@48149 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-11-30Adding some generic docs on extension and device states - watchers and providersOlle Johansson
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@48139 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-10-04Merged revisions 44378 via svnmerge from Kevin P. Fleming
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r44378 | kpfleming | 2006-10-04 14:47:22 -0500 (Wed, 04 Oct 2006) | 4 lines update thread creation code a bit reduce standard thread stack size slightly to allow the pthreads library to allocate the stack+data and not overflow a power-of-2 allocation in the kernel and waste memory/address space add a new stack size for 'background' threads (those that don't handle PBX calls) when LOW_MEMORY is defined ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@44379 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-08-21merge new_loader_completion branch, including (at least):Kevin P. Fleming
- restructured build tree and makefiles to eliminate recursion problems - support for embedded modules - support for static builds - simpler cross-compilation support - simpler module/loader interface (no exported symbols) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@40722 65c4cc65-6c06-0410-ace0-fbb531ad65f3