diff options
author | Joshua Colp <jcolp@digium.com> | 2016-05-05 11:12:59 -0300 |
---|---|---|
committer | Joshua Colp <jcolp@digium.com> | 2016-05-09 10:40:28 -0300 |
commit | 94cd351ec422287295c79658fb3d36f04b5966a5 (patch) | |
tree | 04b21adadbbd64864fa4c56aa8b9a3fb7ce4c50e /include/asterisk/datastore.h | |
parent | 52fbb6389a9df7ba1a9ce6cd6e0b06a0531897b9 (diff) |
datastore: Add common container based datastores API.
This change introduces a common container based datastores
management API. This has been done in a few places across
the tree but this consolidates all of the logic into one
place in a generic fashion.
ASTERISK-25999
Change-Id: I72eb15941dcdbc2a37bb00a33ce00f8755bd336a
Diffstat (limited to 'include/asterisk/datastore.h')
-rw-r--r-- | include/asterisk/datastore.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/include/asterisk/datastore.h b/include/asterisk/datastore.h index 8f59fd3cf..85e9c6890 100644 --- a/include/asterisk/datastore.h +++ b/include/asterisk/datastore.h @@ -92,6 +92,64 @@ struct ast_datastore * attribute_malloc __ast_datastore_alloc(const struct ast_d */ int ast_datastore_free(struct ast_datastore *datastore); +/*! + * \brief Allocate a specialized data stores container + * + * \return a container for storing data stores + * + * \since 14.0.0 + */ +struct ao2_container *ast_datastores_alloc(void); + +/*! + * \brief Add a data store to a container + * + * \param[in] datastores container to store datastore in + * \param[in] datastore datastore to add + * + * \retval 0 success + * \retval -1 failure + * + * \since 14.0.0 + */ +int ast_datastores_add(struct ao2_container *datastores, struct ast_datastore *datastore); + +/*! + * \brief Remove a data store from a container + * + * \param[in] datastores container to remove datastore from + * \param[in] name name of the data store to remove + * + * \since 14.0.0 + */ +void ast_datastores_remove(struct ao2_container *datastores, const char *name); + +/*! + * \brief Find a data store in a container + * + * \param[in] datastores container to find datastore in + * \param[in] name name of the data store to find + * + * \retval non-NULL success + * \retval NULL failure + * + * \since 14.0.0 + */ +struct ast_datastore *ast_datastores_find(struct ao2_container *datastores, const char *name); + +/*! + * \brief Allocate a datastore for use with the datastores container + * + * \param[in] info information about the datastore + * \param[in] uid unique identifier for the datastore + * + * \retval non-NULL success + * \retval NULL failure + * + * \since 14.0.0 + */ +struct ast_datastore *ast_datastores_alloc_datastore(const struct ast_datastore_info *info, const char *uid); + #if defined(__cplusplus) || defined(c_plusplus) } #endif |