From bc73337e0796d7b85b7b4f86d427b4212b895745 Mon Sep 17 00:00:00 2001 From: Corey Farrell Date: Fri, 29 Dec 2017 23:59:00 -0500 Subject: 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) * ast_bucket_file (media_cache.c) * named_acl Change-Id: Ide4c1449a894bce70dea1fef664dade9b57578f1 --- main/media_cache.c | 58 +----------------------------------------------------- 1 file changed, 1 insertion(+), 57 deletions(-) (limited to 'main/media_cache.c') diff --git a/main/media_cache.c b/main/media_cache.c index c58acdd59..90057dc6f 100644 --- a/main/media_cache.c +++ b/main/media_cache.c @@ -49,62 +49,6 @@ /*! Our one and only container holding media items */ static struct ao2_container *media_cache; -/*! - * \internal - * \brief Hashing function for file metadata - */ -static int media_cache_hash(const void *obj, const int flags) -{ - const struct ast_bucket_file *object; - const char *key; - - switch (flags & OBJ_SEARCH_MASK) { - case OBJ_SEARCH_KEY: - key = obj; - break; - case OBJ_SEARCH_OBJECT: - object = obj; - key = ast_sorcery_object_get_id(object); - break; - default: - /* Hash can only work on something with a full key */ - ast_assert(0); - return 0; - } - return ast_str_hash(key); -} - -/*! - * \internal - * \brief Comparison function for file metadata - */ -static int media_cache_cmp(void *obj, void *arg, int flags) -{ - struct ast_bucket_file *left = obj; - struct ast_bucket_file *right = arg; - const char *right_key = arg; - int cmp; - - switch (flags & OBJ_SEARCH_MASK) { - case OBJ_SEARCH_OBJECT: - right_key = ast_sorcery_object_get_id(right); - /* Fall through */ - case OBJ_SEARCH_KEY: - cmp = strcmp(ast_sorcery_object_get_id(left), right_key); - break; - case OBJ_SEARCH_PARTIAL_KEY: - cmp = strncmp(ast_sorcery_object_get_id(left), right_key, strlen(right_key)); - break; - default: - ast_assert(0); - cmp = 0; - break; - } - - return cmp ? 0 : CMP_MATCH | CMP_STOP; -} - - int ast_media_cache_exists(const char *uri) { struct ast_bucket_file *bucket_file; @@ -712,7 +656,7 @@ int ast_media_cache_init(void) ast_register_atexit(media_cache_shutdown); media_cache = ao2_container_alloc_options(AO2_ALLOC_OPT_LOCK_MUTEX, AO2_BUCKETS, - media_cache_hash, media_cache_cmp); + ast_sorcery_object_id_hash, ast_sorcery_object_id_compare); if (!media_cache) { return -1; } -- cgit v1.2.3