summaryrefslogtreecommitdiff
path: root/include/asterisk/datastore.h
diff options
context:
space:
mode:
authorJoshua Colp <jcolp@digium.com>2016-05-05 11:12:59 -0300
committerJoshua Colp <jcolp@digium.com>2016-05-09 10:40:28 -0300
commit94cd351ec422287295c79658fb3d36f04b5966a5 (patch)
tree04b21adadbbd64864fa4c56aa8b9a3fb7ce4c50e /include/asterisk/datastore.h
parent52fbb6389a9df7ba1a9ce6cd6e0b06a0531897b9 (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.h58
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