summaryrefslogtreecommitdiff
path: root/main/media_cache.c
diff options
context:
space:
mode:
authorCorey Farrell <git@cfware.com>2017-12-29 23:59:00 -0500
committerCorey Farrell <git@cfware.com>2017-12-30 13:20:16 -0500
commitbc73337e0796d7b85b7b4f86d427b4212b895745 (patch)
tree017a012d065fed8a132c6c747215aa446e5e0d38 /main/media_cache.c
parent80e6b2eff54a4ff57e2521164224b1b1c878ae94 (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) * ast_bucket_file (media_cache.c) * named_acl Change-Id: Ide4c1449a894bce70dea1fef664dade9b57578f1
Diffstat (limited to 'main/media_cache.c')
-rw-r--r--main/media_cache.c58
1 files changed, 1 insertions, 57 deletions
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;
}