vector: Update API to be more flexible.
authorRichard Mudgett <rmudgett@digium.com>
Sat, 2 Nov 2013 04:12:36 +0000 (04:12 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Sat, 2 Nov 2013 04:12:36 +0000 (04:12 +0000)
commit629a5fc39b1ad8bc638106c1f23537e797b5bedc
treefc9d6f9fee325d65f5ac96235b6589850f41d3bc
parenta84cff117d1f862a6b345f87d0ba1f158e5feecd
vector: Update API to be more flexible.

Made the vector macro API be more like linked lists.
1) Added a name parameter to ast_vector() to name the vector struct.
2) Made the API take a pointer to the vector struct instead of the struct
itself.
3) Added an element cleanup macro/function parameter when removing an
element from the vector for ast_vector_remove_cmp_unordered() and
ast_vector_remove_elem_unordered().
4) Added ast_vector_get_addr() in case the vector element is not a simple
pointer.

* Converted an inline vector usage in stasis_message_router to use the
vector API.  It needed the API improvements so it could be converted.

* Fixed topic reference leak in router_dtor() when the
stasis_message_router is destroyed.

* Fixed deadlock potential in stasis_forward_all() and
stasis_forward_cancel().  Locking two topics at the same time requires
deadlock avoidance.

* Made internal_stasis_subscribe() tolerant of a NULL topic.

* Made stasis_message_router_add(),
stasis_message_router_add_cache_update(), stasis_message_router_remove(),
and stasis_message_router_remove_cache_update() tolerant of a NULL
message_type.

* Promoted a LOG_DEBUG message to LOG_ERROR as intended in
dispatch_message().

Review: https://reviewboard.asterisk.org/r/2903/
........

Merged revisions 402429 from http://svn.asterisk.org/svn/asterisk/branches/12

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@402430 65c4cc65-6c06-0410-ace0-fbb531ad65f3
include/asterisk/lock.h
include/asterisk/vector.h
main/stasis.c
main/stasis_message_router.c