sorcery: Add support for more intelligent reloading.

Some sorcery objects actually contain dynamic content
that can change despite the underlying configuration
itself not changing. A good example of this is the
res_pjsip_endpoint_identifier_ip module which allows
specifying hostnames. While the configuration may not
change between reloads the DNS information of the
hostnames can.

This change adds the ability for a sorcery object to be
marked as having dynamic contents which is then taken
into account when reloading by the sorcery file based
config module. If there is an object with dynamic content
then a reload will be forced while if there are none
then the existing behavior of not reloading occurs.

ASTERISK-29321

Change-Id: I9342dc55be46cc00204533c266a68d972760a0b1
This commit is contained in:
Joshua C. Colp
2021-03-01 17:35:20 -04:00
committed by Joshua Colp
parent 607603cf89
commit 304f8ddfb2
4 changed files with 53 additions and 1 deletions

View File

@@ -1558,6 +1558,28 @@ const char *ast_sorcery_object_get_extended(const void *object, const char *name
*/
int ast_sorcery_object_set_extended(const void *object, const char *name, const char *value);
/*!
* \brief Get whether an object contains dynamic contents or not
*
* \param object Pointer to a sorcery object
*
* \since 19
* \since 18.3.0
* \since 16.17.0
*/
unsigned int ast_sorcery_object_has_dynamic_contents(const void *object);
/*!
* \brief Set the dynamic contents flag on a sorcery object
*
* \param object Pointer to a sorcery object
*
* \since 19
* \since 18.3.0
* \since 16.17.0
*/
void ast_sorcery_object_set_has_dynamic_contents(const void *object);
/*!
* \brief ao2 object comparator based on sorcery id.
*/