Asterisk datastore objects. More...
#include "asterisk/linkedlists.h"
Go to the source code of this file.
Data Structures | |
struct | ast_datastore |
Structure for a data store object. More... | |
struct | ast_datastore_info |
Structure for a data store type. More... | |
Defines | |
#define | ast_datastore_alloc(info, uid) __ast_datastore_alloc(info, uid, __FILE__, __LINE__, __PRETTY_FUNCTION__) |
Functions | |
struct ast_datastore *attribute_malloc | __ast_datastore_alloc (const struct ast_datastore_info *info, const char *uid, const char *file, int line, const char *function) |
Create a data store object. | |
int | ast_datastore_free (struct ast_datastore *datastore) |
Free a data store object. |
Asterisk datastore objects.
Definition in file datastore.h.
#define ast_datastore_alloc | ( | info, | |||
uid | ) | __ast_datastore_alloc(info, uid, __FILE__, __LINE__, __PRETTY_FUNCTION__) |
Definition at line 71 of file datastore.h.
Referenced by _macro_exec(), acf_curlopt_write(), acf_iaxvar_write(), acf_odbc_read(), add_features_datastore(), add_to_agi(), apply_plc(), ast_cel_fabricate_channel_from_event(), ast_channel_cc_params_init(), ast_channel_datastore_alloc(), ast_channel_datastore_inherit(), ast_channel_transfer_masquerade(), ast_do_pickup(), ast_iax2_new(), ast_setup_cc_recall_datastore(), audiohook_volume_get(), authenticate_reply(), calendar_query_exec(), cc_interfaces_datastore_init(), dial_exec_full(), do_notify(), dundi_query_read(), enable_jack_hook(), enum_query_read(), find_or_create_details(), find_transaction(), frame_trace_helper(), func_channel_write_real(), get_lock(), gosub_exec(), initialize_mutehook(), lua_get_state(), pitchshift_helper(), raise_exception(), set_chan_app_data(), setup_inheritance_datastore(), setup_mixmonitor_ds(), setup_transfer_datastore(), shared_write(), smdi_msg_retrieve_read(), socket_process(), speech_create(), speex_write(), srv_datastore_setup(), try_calling(), and volume_write().
struct ast_datastore* attribute_malloc __ast_datastore_alloc | ( | const struct ast_datastore_info * | info, | |
const char * | uid, | |||
const char * | file, | |||
int | line, | |||
const char * | function | |||
) | [read] |
Create a data store object.
[in] | info | information describing the data store object |
[in] | uid | unique identifer |
Definition at line 35 of file datastore.c.
References __ast_calloc(), ast_calloc, ast_free, ast_strdup, ast_strlen_zero(), ast_datastore::info, and ast_datastore::uid.
Referenced by ast_datastore_alloc().
00037 { 00038 struct ast_datastore *datastore = NULL; 00039 00040 /* Make sure we at least have type so we can identify this */ 00041 if (!info) { 00042 return NULL; 00043 } 00044 00045 #if defined(__AST_DEBUG_MALLOC) 00046 if (!(datastore = __ast_calloc(1, sizeof(*datastore), file, line, function))) { 00047 return NULL; 00048 } 00049 #else 00050 if (!(datastore = ast_calloc(1, sizeof(*datastore)))) { 00051 return NULL; 00052 } 00053 #endif 00054 00055 datastore->info = info; 00056 00057 if (!ast_strlen_zero(uid) && !(datastore->uid = ast_strdup(uid))) { 00058 ast_free(datastore); 00059 datastore = NULL; 00060 } 00061 00062 return datastore; 00063 }
int ast_datastore_free | ( | struct ast_datastore * | datastore | ) |
Free a data store object.
[in] | datastore | datastore to free |
Definition at line 65 of file datastore.c.
References ast_free, ast_datastore::data, ast_datastore_info::destroy, ast_datastore::info, and ast_datastore::uid.
Referenced by acf_curlopt_write(), acf_fetch(), acf_iaxvar_write(), acf_odbc_read(), add_features_datastore(), add_to_agi(), adjust_frame_for_plc(), apply_plc(), ast_cel_fabricate_channel_from_event(), ast_channel_datastore_free(), ast_channel_destructor(), ast_channel_transfer_masquerade(), ast_do_masquerade(), ast_do_pickup(), ast_dummy_channel_destructor(), ast_iax2_new(), ast_setup_cc_recall_datastore(), audiohook_volume_get(), authenticate_reply(), cc_interfaces_datastore_init(), clear_dialed_interfaces(), dial_exec_full(), disable_jack_hook(), enable_jack_hook(), exec_odbcfinish(), find_transaction(), frame_trace_helper(), func_mute_write(), get_lock(), gosub_exec(), initialize_mutehook(), lua_get_state(), manager_mutestream(), pitchshift_helper(), raise_exception(), session_destructor(), set_chan_app_data(), setup_inheritance_datastore(), shared_write(), socket_process(), speex_write(), srv_query_read(), stop_mixmonitor_exec(), try_calling(), and volume_write().
00066 { 00067 int res = 0; 00068 00069 /* Using the destroy function (if present) destroy the data */ 00070 if (datastore->info->destroy != NULL && datastore->data != NULL) { 00071 datastore->info->destroy(datastore->data); 00072 datastore->data = NULL; 00073 } 00074 00075 /* Free allocated UID memory */ 00076 if (datastore->uid != NULL) { 00077 ast_free((void *) datastore->uid); 00078 datastore->uid = NULL; 00079 } 00080 00081 /* Finally free memory used by ourselves */ 00082 ast_free(datastore); 00083 00084 return res; 00085 }