From: Matt Jordan Date: Sun, 12 Jul 2015 01:25:19 +0000 (-0500) Subject: main/bucket: Add a callback function for ast_bucket_file objects X-Git-Tag: 14.0.0-beta1~806^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=887945d410399f299bfc98eb226232ae42105112;p=thirdparty%2Fasterisk.git main/bucket: Add a callback function for ast_bucket_file objects This patch adds a new function to the bucket API for ast_bucket_file objects, ast_bucket_file_metadata_callback. It will call ao2_callback on the ast_bucket_file's ao2_container of metadata, calling the provided ao2_callback_fn callback on each piece of metadata associated with the file. This is particularly useful when a bucket backend has added metadata, and a higher level API wants to be aware of/access said metadata, without knowing for sure what the key is. Change-Id: I96f6757717f47b650df91a437f7df16406227466 --- diff --git a/include/asterisk/bucket.h b/include/asterisk/bucket.h index c335fd3519..4a27c3c18d 100644 --- a/include/asterisk/bucket.h +++ b/include/asterisk/bucket.h @@ -194,6 +194,17 @@ int ast_bucket_file_metadata_unset(struct ast_bucket_file *file, const char *nam */ struct ast_bucket_metadata *ast_bucket_file_metadata_get(struct ast_bucket_file *file, const char *name); +/*! + * \brief Execute a callback function on the metadata associated with a file + * \since 14.0.0 + * + * \param file The bucket file + * \param cb An ao2 callback function that will be called with each \c ast_bucket_metadata + * associated with \c file + * \param arg An optional argument to pass to \c cb + */ +void ast_bucket_file_metadata_callback(struct ast_bucket_file *file, ao2_callback_fn cb, void *arg); + /*! * \brief Allocate a new bucket * diff --git a/main/bucket.c b/main/bucket.c index afb0175749..f7845c8c08 100644 --- a/main/bucket.c +++ b/main/bucket.c @@ -362,6 +362,12 @@ struct ast_bucket_metadata *ast_bucket_file_metadata_get(struct ast_bucket_file return ao2_find(file->metadata, name, OBJ_KEY); } +void ast_bucket_file_metadata_callback(struct ast_bucket_file *file, ao2_callback_fn cb, void *arg) +{ + ao2_callback(file->metadata, 0, cb, arg); +} + + /*! \brief Destructor for buckets */ static void bucket_destroy(void *obj) {