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
This commit is contained in:
Joshua Colp
2016-05-05 11:12:59 -03:00
parent 52fbb6389a
commit 94cd351ec4
2 changed files with 138 additions and 0 deletions

View File

@@ -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