From 9471b87d27bda1ec762c712f68489e88244b8fae Mon Sep 17 00:00:00 2001 From: Tilghman Lesher Date: Thu, 5 Jun 2008 19:07:27 +0000 Subject: Merge the adaptive realtime branch, which will make adding new required fields to realtime less painful in the future. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@120789 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- include/asterisk/config.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'include/asterisk/config.h') diff --git a/include/asterisk/config.h b/include/asterisk/config.h index 80f651d44..e1f983dc3 100644 --- a/include/asterisk/config.h +++ b/include/asterisk/config.h @@ -46,6 +46,17 @@ enum { #define CONFIG_STATUS_FILEUNCHANGED (void *)-1 +/*! + * \brief Types used in ast_realtime_require_field + */ +typedef enum { + RQ_INTEGER, + RQ_CHAR, + RQ_FLOAT, + RQ_DATE, + RQ_DATETIME, +} require_type; + /*! \brief Structure for variables, used for configurations and for channel variables */ struct ast_variable { @@ -70,6 +81,8 @@ typedef struct ast_config *realtime_multi_get(const char *database, const char * typedef int realtime_update(const char *database, const char *table, const char *keyfield, const char *entity, va_list ap); typedef int realtime_store(const char *database, const char *table, va_list ap); typedef int realtime_destroy(const char *database, const char *table, const char *keyfield, const char *entity, va_list ap); +typedef int realtime_require(const char *database, const char *table, va_list ap); +typedef int realtime_unload(const char *database, const char *table); /*! \brief Configuration engine structure, used to define realtime drivers */ struct ast_config_engine { @@ -80,6 +93,8 @@ struct ast_config_engine { realtime_update *update_func; realtime_store *store_func; realtime_destroy *destroy_func; + realtime_require *require_func; + realtime_unload *unload_func; struct ast_config_engine *next; }; @@ -185,6 +200,26 @@ int ast_category_exist(const struct ast_config *config, const char *category_nam struct ast_variable *ast_load_realtime(const char *family, ...) attribute_sentinel; struct ast_variable *ast_load_realtime_all(const char *family, ...) attribute_sentinel; +/*! + * \brief Release any resources cached for a realtime family + * \param family which family/config to destroy + * Various backends may cache attributes about a realtime data storage + * facility; on reload, a front end resource may request to purge that cache. + */ +int ast_unload_realtime(const char *family); + +/*! + * \brief Inform realtime what fields that may be stored + * \param family which family/config is referenced + * This will inform builtin configuration backends that particular fields + * may be updated during the use of that configuration section. This is + * mainly to be used during startup routines, to ensure that various fields + * exist in the backend. The backends may take various actions, such as + * creating new fields in the data store or warning the administrator that + * new fields may need to be created, in order to ensure proper function. + */ +int ast_require_realtime_fields(const char *family, ...) attribute_sentinel; + /*! * \brief Retrieve realtime configuration * \param family which family/config to lookup @@ -232,6 +267,8 @@ int ast_destroy_realtime(const char *family, const char *keyfield, const char *l */ int ast_check_realtime(const char *family); +int ast_realtime_require_field(const char *family, ...) attribute_sentinel; + /*! \brief Check if there's any realtime engines loaded */ int ast_realtime_enabled(void); -- cgit v1.2.3