summaryrefslogtreecommitdiff
path: root/main/named_locks.c
diff options
context:
space:
mode:
authorCorey Farrell <git@cfware.com>2017-12-29 23:59:00 -0500
committerCorey Farrell <git@cfware.com>2018-01-01 19:17:15 -0500
commit5b395a7b97775f62083675f13537179150befd3f (patch)
tree466e3550e77dd543e0eb52a20d8499c6a443e081 /main/named_locks.c
parentb47882df72fbeae6ab340b21817d7f3fc4a1ba97 (diff)
core: Use macros to generate ao2_container callbacks where possible.
This uses AO2_STRING_FIELD_HASH_FN and AO2_STRING_FIELD_CMP_FN where possible in the Asterisk core. This removes CMP_STOP from the result of CMP_FN callbacks for the following structure types: * ast_bucket_metadata * ast_bucket_scheme * generic_monitor_instance_list (ccss.c) * named_acl Change-Id: Ide4c1449a894bce70dea1fef664dade9b57578f1
Diffstat (limited to 'main/named_locks.c')
-rw-r--r--main/named_locks.c44
1 files changed, 3 insertions, 41 deletions
diff --git a/main/named_locks.c b/main/named_locks.c
index 596048388..6b41f2adb 100644
--- a/main/named_locks.c
+++ b/main/named_locks.c
@@ -39,46 +39,8 @@ struct ast_named_lock {
char key[0];
};
-static int named_locks_hash(const void *obj, const int flags)
-{
- const struct ast_named_lock *lock = obj;
-
- switch (flags & OBJ_SEARCH_MASK) {
- case OBJ_SEARCH_KEY:
- return ast_str_hash(obj);
- case OBJ_SEARCH_OBJECT:
- return ast_str_hash(lock->key);
- default:
- /* Hash can only work on something with a full key. */
- ast_assert(0);
- return 0;
- }
-}
-
-static int named_locks_cmp(void *obj_left, void *obj_right, int flags)
-{
- const struct ast_named_lock *object_left = obj_left;
- const struct ast_named_lock *object_right = obj_right;
- const char *right_key = obj_right;
- int cmp;
-
- switch (flags & OBJ_SEARCH_MASK) {
- case OBJ_SEARCH_OBJECT:
- right_key = object_right->key;
- /* Fall through */
- case OBJ_SEARCH_KEY:
- cmp = strcmp(object_left->key, right_key);
- break;
- case OBJ_SEARCH_PARTIAL_KEY:
- cmp = strncmp(object_left->key, right_key, strlen(right_key));
- break;
- default:
- cmp = 0;
- break;
- }
-
- return cmp ? 0 : CMP_MATCH;
-}
+AO2_STRING_FIELD_HASH_FN(ast_named_lock, key)
+AO2_STRING_FIELD_CMP_FN(ast_named_lock, key)
static void named_locks_shutdown(void)
{
@@ -88,7 +50,7 @@ static void named_locks_shutdown(void)
int ast_named_locks_init(void)
{
named_locks = ao2_container_alloc_hash(AO2_ALLOC_OPT_LOCK_MUTEX, 0,
- NAMED_LOCKS_BUCKETS, named_locks_hash, NULL, named_locks_cmp);
+ NAMED_LOCKS_BUCKETS, ast_named_lock_hash_fn, NULL, ast_named_lock_cmp_fn);
if (!named_locks) {
return -1;
}