mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-18 10:44:28 +00:00
Merge "sorcery: Add setting object type congestion levels." into 13
This commit is contained in:
@@ -691,6 +691,20 @@ int __ast_sorcery_object_register(struct ast_sorcery *sorcery, const char *type,
|
|||||||
#define ast_sorcery_internal_object_register(sorcery, type, alloc, transform, apply) \
|
#define ast_sorcery_internal_object_register(sorcery, type, alloc, transform, apply) \
|
||||||
__ast_sorcery_object_register((sorcery), (type), 1, 1, (alloc), (transform), (apply))
|
__ast_sorcery_object_register((sorcery), (type), 1, 1, (alloc), (transform), (apply))
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Set the high and low alert water marks of the sorcery object type.
|
||||||
|
* \since 13.10.0
|
||||||
|
*
|
||||||
|
* \param sorcery Pointer to a sorcery structure
|
||||||
|
* \param type Type of object
|
||||||
|
* \param low_water New queue low water mark. (-1 to set as 90% of high_water)
|
||||||
|
* \param high_water New queue high water mark.
|
||||||
|
*
|
||||||
|
* \retval 0 on success.
|
||||||
|
* \retval -1 on error (water marks not changed).
|
||||||
|
*/
|
||||||
|
int ast_sorcery_object_set_congestion_levels(struct ast_sorcery *sorcery, const char *type, long low_water, long high_water);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Set the copy handler for an object type
|
* \brief Set the copy handler for an object type
|
||||||
*
|
*
|
||||||
|
@@ -1161,6 +1161,20 @@ int __ast_sorcery_object_register(struct ast_sorcery *sorcery, const char *type,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ast_sorcery_object_set_congestion_levels(struct ast_sorcery *sorcery, const char *type, long low_water, long high_water)
|
||||||
|
{
|
||||||
|
struct ast_sorcery_object_type *object_type;
|
||||||
|
int res = -1;
|
||||||
|
|
||||||
|
object_type = ao2_find(sorcery->types, type, OBJ_SEARCH_KEY);
|
||||||
|
if (object_type) {
|
||||||
|
res = ast_taskprocessor_alert_set_levels(object_type->serializer,
|
||||||
|
low_water, high_water);
|
||||||
|
ao2_ref(object_type, -1);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
void ast_sorcery_object_set_copy_handler(struct ast_sorcery *sorcery, const char *type, sorcery_copy_handler copy)
|
void ast_sorcery_object_set_copy_handler(struct ast_sorcery *sorcery, const char *type, sorcery_copy_handler copy)
|
||||||
{
|
{
|
||||||
RAII_VAR(struct ast_sorcery_object_type *, object_type, ao2_find(sorcery->types, type, OBJ_KEY), ao2_cleanup);
|
RAII_VAR(struct ast_sorcery_object_type *, object_type, ao2_find(sorcery->types, type, OBJ_KEY), ao2_cleanup);
|
||||||
|
@@ -25,6 +25,7 @@
|
|||||||
#include "asterisk/astobj2.h"
|
#include "asterisk/astobj2.h"
|
||||||
#include "asterisk/paths.h"
|
#include "asterisk/paths.h"
|
||||||
#include "asterisk/sorcery.h"
|
#include "asterisk/sorcery.h"
|
||||||
|
#include "asterisk/taskprocessor.h"
|
||||||
#include "include/res_pjsip_private.h"
|
#include "include/res_pjsip_private.h"
|
||||||
#include "asterisk/res_pjsip_cli.h"
|
#include "asterisk/res_pjsip_cli.h"
|
||||||
#include "asterisk/statsd.h"
|
#include "asterisk/statsd.h"
|
||||||
@@ -1119,6 +1120,8 @@ int ast_sip_initialize_sorcery_location(void)
|
|||||||
ast_pjproject_get_buildopt("PJSIP_MAX_URL_SIZE", "%d", &pjsip_max_url_size);
|
ast_pjproject_get_buildopt("PJSIP_MAX_URL_SIZE", "%d", &pjsip_max_url_size);
|
||||||
|
|
||||||
ast_sorcery_apply_default(sorcery, "contact", "astdb", "registrar");
|
ast_sorcery_apply_default(sorcery, "contact", "astdb", "registrar");
|
||||||
|
ast_sorcery_object_set_congestion_levels(sorcery, "contact", -1,
|
||||||
|
3 * AST_TASKPROCESSOR_HIGH_WATER_LEVEL);
|
||||||
ast_sorcery_apply_default(sorcery, "aor", "config", "pjsip.conf,criteria=type=aor");
|
ast_sorcery_apply_default(sorcery, "aor", "config", "pjsip.conf,criteria=type=aor");
|
||||||
|
|
||||||
if (ast_sorcery_object_register(sorcery, "contact", contact_alloc, NULL, contact_apply_handler) ||
|
if (ast_sorcery_object_register(sorcery, "contact", contact_alloc, NULL, contact_apply_handler) ||
|
||||||
|
@@ -31,6 +31,7 @@
|
|||||||
#include "asterisk/test.h"
|
#include "asterisk/test.h"
|
||||||
#include "asterisk/statsd.h"
|
#include "asterisk/statsd.h"
|
||||||
#include "include/res_pjsip_private.h"
|
#include "include/res_pjsip_private.h"
|
||||||
|
#include "asterisk/taskprocessor.h"
|
||||||
|
|
||||||
#define DEFAULT_LANGUAGE "en"
|
#define DEFAULT_LANGUAGE "en"
|
||||||
#define DEFAULT_ENCODING "text/plain"
|
#define DEFAULT_ENCODING "text/plain"
|
||||||
@@ -1015,6 +1016,8 @@ int ast_sip_initialize_sorcery_qualify(void)
|
|||||||
|
|
||||||
/* initialize sorcery ast_sip_contact_status resource */
|
/* initialize sorcery ast_sip_contact_status resource */
|
||||||
ast_sorcery_apply_default(sorcery, CONTACT_STATUS, "memory", NULL);
|
ast_sorcery_apply_default(sorcery, CONTACT_STATUS, "memory", NULL);
|
||||||
|
ast_sorcery_object_set_congestion_levels(sorcery, CONTACT_STATUS, -1,
|
||||||
|
3 * AST_TASKPROCESSOR_HIGH_WATER_LEVEL);
|
||||||
|
|
||||||
if (ast_sorcery_internal_object_register(sorcery, CONTACT_STATUS,
|
if (ast_sorcery_internal_object_register(sorcery, CONTACT_STATUS,
|
||||||
contact_status_alloc, NULL, NULL)) {
|
contact_status_alloc, NULL, NULL)) {
|
||||||
|
Reference in New Issue
Block a user