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) {