#include "asterisk/compat.h"
#include "asterisk/linkedlists.h"
Go to the source code of this file.
Data Structures | |
struct | ao2_iterator |
When we need to walk through a container, we use an ao2_iterator to keep track of the current position. More... | |
Defines | |
#define | ao2_callback_data(arg1, arg2, arg3, arg4, arg5) __ao2_callback_data((arg1), (arg2), (arg3), (arg4), (arg5)) |
#define | ao2_find(arg1, arg2, arg3) __ao2_find((arg1), (arg2), (arg3)) |
#define | ao2_iterator_next(arg1) __ao2_iterator_next((arg1)) |
#define | ao2_lock(a) __ao2_lock(a, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a) |
#define | ao2_t_callback_data(arg1, arg2, arg3, arg4, arg5, arg6) __ao2_callback_data((arg1), (arg2), (arg3), (arg4), (arg5)) |
ao2_callback_data() is a generic function that applies cb_fn() to all objects in a container. It is functionally identical to ao2_callback() except that instead of taking an ao2_callback_fn *, it takes an ao2_callback_data_fn *, and allows the caller to pass in arbitrary data. | |
#define | ao2_t_find(arg1, arg2, arg3, arg4) __ao2_find((arg1), (arg2), (arg3)) |
#define | ao2_t_iterator_next(arg1, arg2) __ao2_iterator_next((arg1)) |
#define | ao2_trylock(a) __ao2_trylock(a, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a) |
#define | ao2_unlock(a) __ao2_unlock(a, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a) |
Typedefs | |
typedef int( | ao2_callback_data_fn )(void *obj, void *arg, void *data, int flags) |
Type of a generic callback function. | |
typedef int( | ao2_callback_fn )(void *obj, void *arg, int flags) |
Type of a generic callback function. | |
typedef void(* | ao2_destructor_fn )(void *) |
Typedef for an object destructor. This is called just before freeing the memory for the object. It is passed a pointer to the user-defined data of the object. | |
typedef int( | ao2_hash_fn )(const void *obj, const int flags) |
Enumerations | |
enum | _cb_results { CMP_MATCH = 0x1, CMP_STOP = 0x2 } |
A callback function will return a combination of CMP_MATCH and CMP_STOP. The latter will terminate the search in a container. More... | |
enum | ao2_iterator_flags { AO2_ITERATOR_DONTLOCK = (1 << 0), AO2_ITERATOR_MALLOCD = (1 << 1), AO2_ITERATOR_UNLINK = (1 << 2) } |
enum | search_flags { OBJ_UNLINK = (1 << 0), OBJ_NODATA = (1 << 1), OBJ_MULTIPLE = (1 << 2), OBJ_POINTER = (1 << 3), OBJ_CONTINUE = (1 << 4) } |
Flags passed to ao2_callback() and ao2_hash_fn() to modify its behaviour. More... | |
Functions | |
void * | __ao2_callback_data (struct ao2_container *c, enum search_flags flags, ao2_callback_data_fn *cb_fn, void *arg, void *data) |
void * | __ao2_callback_data_debug (struct ao2_container *c, enum search_flags flags, ao2_callback_data_fn *cb_fn, void *arg, void *data, char *tag, char *file, int line, const char *funcname) |
void * | __ao2_find (struct ao2_container *c, void *arg, enum search_flags flags) |
void * | __ao2_find_debug (struct ao2_container *c, void *arg, enum search_flags flags, char *tag, char *file, int line, const char *funcname) |
void * | __ao2_iterator_next (struct ao2_iterator *a) |
void * | __ao2_iterator_next_debug (struct ao2_iterator *a, char *tag, char *file, int line, const char *funcname) |
int | __ao2_lock (void *a, const char *file, const char *func, int line, const char *var) |
Lock an object. | |
int | __ao2_trylock (void *a, const char *file, const char *func, int line, const char *var) |
Try locking-- (don't block if fail). | |
int | __ao2_unlock (void *a, const char *file, const char *func, int line, const char *var) |
Unlock an object. | |
void | ao2_bt (void) |
void | ao2_iterator_destroy (struct ao2_iterator *i) |
Destroy a container iterator. | |
struct ao2_iterator | ao2_iterator_init (struct ao2_container *c, int flags) |
Create an iterator for a container. | |
void * | ao2_object_get_lockaddr (void *obj) |
Return the lock address of an object. | |
Variables | |
ao2_callback_fn | ao2_match_by_addr |
a very common callback is one that matches by address. | |
| |
#define | ao2_alloc(data_size, destructor_fn) __ao2_alloc_debug((data_size), (destructor_fn), "", __FILE__, __LINE__, __PRETTY_FUNCTION__, 0) |
#define | ao2_callback(c, flags, cb_fn, arg) __ao2_callback((c), (flags), (cb_fn), (arg)) |
#define | ao2_ref(o, delta) __ao2_ref((o), (delta)) |
#define | ao2_t_alloc(data_size, destructor_fn, debug_msg) __ao2_alloc_debug((data_size), (destructor_fn), (debug_msg), __FILE__, __LINE__, __PRETTY_FUNCTION__, 0) |
Allocate and initialize an object. | |
#define | ao2_t_callback(c, flags, cb_fn, arg, tag) __ao2_callback((c), (flags), (cb_fn), (arg)) |
ao2_callback() is a generic function that applies cb_fn() to all objects in a container, as described below. | |
#define | ao2_t_ref(o, delta, tag) __ao2_ref((o), (delta)) |
Reference/unreference an object and return the old refcount. | |
void * | __ao2_alloc (const size_t data_size, ao2_destructor_fn destructor_fn) |
void * | __ao2_alloc_debug (const size_t data_size, ao2_destructor_fn destructor_fn, char *tag, const char *file, int line, const char *funcname, int ref_debug) |
void * | __ao2_callback (struct ao2_container *c, enum search_flags flags, ao2_callback_fn *cb_fn, void *arg) |
void * | __ao2_callback_debug (struct ao2_container *c, enum search_flags flags, ao2_callback_fn *cb_fn, void *arg, char *tag, char *file, int line, const char *funcname) |
int | __ao2_ref (void *o, int delta) |
int | __ao2_ref_debug (void *o, int delta, const char *tag, const char *file, int line, const char *funcname) |
Object Containers | |
Here start declarations of containers. | |
#define | ao2_container_alloc(arg1, arg2, arg3) __ao2_container_alloc_debug((arg1), (arg2), (arg3), "", __FILE__, __LINE__, __PRETTY_FUNCTION__, 0) |
#define | ao2_t_container_alloc(arg1, arg2, arg3, arg4) __ao2_container_alloc_debug((arg1), (arg2), (arg3), (arg4), __FILE__, __LINE__, __PRETTY_FUNCTION__, 0) |
Allocate and initialize a container with the desired number of buckets. | |
struct ao2_container * | __ao2_container_alloc (const unsigned int n_buckets, ao2_hash_fn *hash_fn, ao2_callback_fn *cmp_fn) |
struct ao2_container * | __ao2_container_alloc_debug (const unsigned int n_buckets, ao2_hash_fn *hash_fn, ao2_callback_fn *cmp_fn, char *tag, char *file, int line, const char *funcname, int ref_debug) |
int | ao2_container_count (struct ao2_container *c) |
Returns the number of elements in a container. | |
Object Management | |
Here we have functions to manage objects. We can use the functions below on any kind of object defined by the user. | |
#define | ao2_link(arg1, arg2) __ao2_link((arg1), (arg2)) |
#define | ao2_t_link(arg1, arg2, arg3) __ao2_link((arg1), (arg2)) |
Add an object to a container. | |
#define | ao2_t_unlink(arg1, arg2, arg3) __ao2_unlink((arg1), (arg2)) |
Remove an object from a container. | |
#define | ao2_unlink(arg1, arg2) __ao2_unlink((arg1), (arg2)) |
void * | __ao2_link (struct ao2_container *c, void *newobj) |
void * | __ao2_link_debug (struct ao2_container *c, void *new_obj, char *tag, char *file, int line, const char *funcname) |
void * | __ao2_unlink (struct ao2_container *c, void *obj) |
void * | __ao2_unlink_debug (struct ao2_container *c, void *obj, char *tag, char *file, int line, const char *funcname) |
Object Model implementing objects and containers.
Definition in file astobj2.h.
#define ao2_alloc | ( | data_size, | |||
destructor_fn | ) | __ao2_alloc_debug((data_size), (destructor_fn), "", __FILE__, __LINE__, __PRETTY_FUNCTION__, 0) |
Definition at line 425 of file astobj2.h.
Referenced by __ast_channel_alloc_ap(), __ast_dummy_channel_alloc(), _ast_odbc_request_obj2(), _moh_class_malloc(), add_calltoken_ignore(), alloc_event_ref(), ast_add_hint(), ast_bridge_new(), ast_calendar_event_alloc(), ast_cel_linkedid_ref(), ast_extension_state_add_destroy(), ast_manager_register2(), ast_register_indication(), ast_rtp_instance_new(), ast_taskprocessor_get(), ast_tcptls_client_create(), ast_tcptls_server_root(), ast_tone_zone_alloc(), build_calendar(), build_callno_limits(), build_device(), build_mansession(), build_peer(), build_profile(), build_route(), build_user(), caldav_load_calendar(), calendar_query_exec(), chan_list_init(), conf_run(), create_callno_pools(), create_esc_entry(), create_parkinglot(), create_queue_member(), create_trunk_ref(), data_filter_alloc(), data_provider_new(), data_result_create(), data_search_alloc(), dialgroup_write(), ewscal_load_calendar(), exchangecal_load_calendar(), fax_session_new(), fax_session_reserve(), get_filestream(), ical_load_calendar(), inprocess_count(), join_conference_bridge(), kqueue_timer_open(), load_config(), load_odbc_config(), local_alloc(), multiplexed_bridge_create(), new_iax(), parse_apps(), peercnt_add(), proxy_from_config(), pthread_timer_open(), realtime_common(), session_details_new(), set_fn(), sip_monitor_instance_init(), sip_prepare_socket(), sip_tcptls_write(), sip_threadinfo_create(), sla_build_station(), sla_build_trunk(), sla_create_station_ref(), tcptls_stream_alloc(), timerfd_timer_open(), try_calling(), and xml_translate().
#define ao2_callback | ( | c, | |||
flags, | |||||
cb_fn, | |||||
arg | ) | __ao2_callback((c), (flags), (cb_fn), (arg)) |
Definition at line 910 of file astobj2.h.
Referenced by _ast_odbc_request_obj2(), _sip_show_peers(), admin_exec(), ast_begin_shutdown(), ast_calendar_clear_events(), ast_calendar_merge_events(), ast_calendar_unregister(), ast_event_dump_cache(), ast_extension_state_del(), ast_merge_contexts_and_delete(), ast_unregister_indication_country(), caldav_destructor(), calendar_is_busy(), calltoken_required(), cc_handle_publish_error(), channel_admin_exec(), cleanup(), conf_run(), delete_users(), destroy_hint(), do_timing(), event_dump_cache(), event_update_cache(), ewscal_destructor(), exchangecal_destructor(), handle_cc_notify(), handle_response_subscribe(), icalendar_destructor(), load_config(), load_indications(), load_module(), meetme_data_provider_get(), meetme_menu_admin(), meetme_menu_admin_extended(), multiplexed_bridge_create(), queue_delme_members_decrement_followers(), queue_member_follower_removal(), reload(), reload_config(), reload_queues(), reload_single_queue(), set_config_destroy(), set_defaults(), set_peercnt_limit(), sip_tcp_locate(), sla_destroy(), sla_load_config(), and unload_module().
#define ao2_callback_data | ( | arg1, | |||
arg2, | |||||
arg3, | |||||
arg4, | |||||
arg5 | ) | __ao2_callback_data((arg1), (arg2), (arg3), (arg4), (arg5)) |
Definition at line 943 of file astobj2.h.
Referenced by ast_channel_callback().
#define ao2_container_alloc | ( | arg1, | |||
arg2, | |||||
arg3 | ) | __ao2_container_alloc_debug((arg1), (arg2), (arg3), "", __FILE__, __LINE__, __PRETTY_FUNCTION__, 0) |
Definition at line 729 of file astobj2.h.
Referenced by __init_manager(), ast_add_hint(), ast_calendar_event_container_alloc(), ast_cel_engine_init(), ast_channels_init(), ast_config_text_file_save(), ast_data_init(), ast_event_init(), ast_features_init(), ast_indications_init(), ast_pbx_init(), ast_tps_init(), build_calendar(), build_conf(), build_mansession(), create_callno_pools(), data_filter_alloc(), data_provider_new(), data_result_create(), data_search_alloc(), dialgroup_write(), get_lock(), init_queue(), initialize_escs(), internal_ao2_callback(), load_module(), load_objects(), load_odbc_config(), sla_load_config(), and xml_translate().
#define ao2_find | ( | arg1, | |||
arg2, | |||||
arg3 | ) | __ao2_find((arg1), (arg2), (arg3)) |
Definition at line 964 of file astobj2.h.
Referenced by __find_callno(), _lookup_timer(), add_calltoken_ignore(), admin_exec(), ast_add_hint(), ast_cel_check_retire_linkedid(), ast_cel_linkedid_ref(), ast_cel_report_event(), ast_change_hint(), ast_channel_get_full(), ast_event_get_cached(), ast_extension_state_add_destroy(), ast_extension_state_del(), ast_get_indication_zone(), ast_merge_contexts_and_delete(), ast_remove_hint(), ast_taskprocessor_get(), ast_unregister_indication_country(), authenticate_request(), authenticate_verify(), build_callno_limits(), build_peer(), build_user(), channel_iterator_search(), check_manager_session_inuse(), cli_alias_passthrough(), cli_fax_show_session(), compare_weight(), complete_indications(), data_filter_find(), data_provider_find(), data_result_find_child(), data_search_find(), dialgroup_read(), dialgroup_write(), find_calendar(), find_event(), find_hint_by_cb_id(), find_parkinglot(), find_peer(), find_profile(), find_pvt(), find_timer(), find_user(), get_esc_entry(), get_unused_callno(), handle_cli_iax2_unregister(), handle_cli_indication_show(), iax2_destroy_helper(), inprocess_count(), join_conference_bridge(), meetme_menu_admin(), meetmemute(), parse_tone_zone(), peercnt_add(), peercnt_modify(), peercnt_remove_by_addr(), phoneprov_callback(), realtime_common(), reload_single_member(), remove_from_queue(), sched_delay_remove(), set_fn(), sip_poke_peer_s(), sla_find_station(), sla_find_trunk(), timerfd_timer_ack(), timerfd_timer_close(), timerfd_timer_disable_continuous(), timerfd_timer_enable_continuous(), timerfd_timer_get_event(), timerfd_timer_set_rate(), update_queue(), and xml_translate().
#define ao2_iterator_next | ( | arg1 | ) | __ao2_iterator_next((arg1)) |
Definition at line 1126 of file astobj2.h.
Referenced by __ast_data_search_cmp_structure(), __ast_manager_event_multichan(), __data_result_print_cli(), __iax2_show_peers(), __queues_show(), action_meetmelist(), alias_show(), ast_channel_iterator_next(), ast_data_iterator_next(), ast_data_search_match(), ast_merge_contexts_and_delete(), ast_srtp_unprotect(), ast_var_indications(), ast_var_indications_table(), astman_verify_session_readpermissions(), astman_verify_session_writepermissions(), authenticate(), authenticate_reply(), build_dialplan_useage_map(), calendar_query_exec(), check_access(), clear_queue(), cli_console_active(), cli_fax_show_sessions(), cli_list_devices(), cli_tps_report(), complete_core_show_hint(), complete_country(), complete_iax2_peers(), complete_iax2_unregister(), complete_queue_remove_member(), complete_userno(), conf_queue_dtmf(), data_filter_find(), data_get_xml_add_child(), data_odbc_provider_handler(), data_provider_print_cli(), data_provider_release_all(), data_result_generate_node(), data_result_manager_output(), delete_profiles(), delete_routes(), delete_users(), destroy_pvts(), dialgroup_read(), do_parking_thread(), dump_queue_members(), extension_state_cb(), fax_session_tab_complete(), find_call(), find_queue_by_name_rt(), find_session(), find_session_by_nonce(), free_members(), get_member_status(), handle_cli_iax2_show_callno_limits(), handle_cli_iax2_show_users(), handle_cli_indication_show(), handle_cli_odbc_show(), handle_cli_status(), handle_feature_show(), handle_parkedcalls(), handle_show_calendar(), handle_show_calendars(), handle_show_hint(), handle_show_hints(), handle_show_routes(), handle_showmanconn(), handle_statechange(), hints_data_provider_get(), iax2_getpeername(), iax2_getpeertrunk(), interface_exists(), local_devicestate(), locals_show(), manager_iax2_show_peer_list(), manager_optimize_away(), manager_parking_status(), manager_queues_status(), manager_queues_summary(), meetme_menu_admin_extended(), meetme_show_cmd(), moh_rescan_files(), num_available_members(), peers_data_provider_get(), poke_all_peers(), pp_each_user_helper(), prune_peers(), prune_users(), purge_sessions(), queue_function_qac(), queue_function_qac_dep(), queue_function_queuememberlist(), queue_function_queuememberpaused(), queue_function_queuememberstatus(), queues_data_provider_get(), queues_data_provider_get_helper(), reload(), rt_handle_member_record(), sla_calc_station_delays(), sla_change_trunk_state(), sla_queue_event_conf(), sla_show_stations(), sla_show_trunks(), stop_streams(), tps_taskprocessor_tab_complete(), try_calling(), unload_module(), update_realtime_members(), and users_data_provider_get().
#define ao2_link | ( | arg1, | |||
arg2 | ) | __ao2_link((arg1), (arg2)) |
Definition at line 785 of file astobj2.h.
Referenced by __ast_channel_alloc_ap(), _ast_odbc_request_obj2(), add_calltoken_ignore(), add_new_event_cb(), ast_add_hint(), ast_cel_linkedid_ref(), ast_change_hint(), ast_change_name(), ast_do_masquerade(), ast_extension_state_add_destroy(), ast_merge_contexts_and_delete(), ast_register_indication_country(), ast_taskprocessor_get(), ast_taskprocessor_unreference(), build_calendar(), build_callno_limits(), build_device(), build_mansession(), build_parkinglot(), build_profile(), build_route(), caldav_add_event(), conf_run(), create_callno_pools(), create_dynamic_parkinglot(), create_new_sip_etag(), data_filter_add_child(), data_provider_add_child(), data_result_add_child(), data_search_add_child(), dialgroup_write(), endelm(), event_update_cache(), fax_session_new(), get_lock(), icalendar_add_event(), inprocess_count(), join_conference_bridge(), kqueue_timer_open(), load_config(), local_alloc(), member_add_to_queue(), multiplexed_bridge_create(), odbc_register_class(), on_dns_update_peer(), parse_apps(), parse_tag(), peercnt_add(), pthread_timer_open(), realtime_common(), realtime_peer(), realtime_user(), reload_single_member(), replace_callno(), set_config(), set_fn(), sip_monitor_instance_init(), sla_build_station(), sla_build_trunk(), store_by_peercallno(), store_by_transfercallno(), timerfd_timer_open(), and xml_translate().
#define ao2_lock | ( | a | ) | __ao2_lock(a, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a) |
Definition at line 488 of file astobj2.h.
Referenced by __ast_manager_event_multichan(), __queues_show(), _sip_show_peer(), _sip_show_peers(), _sip_show_peers_one(), _sip_tcp_helper_thread(), action_waitevent(), add_calltoken_ignore(), add_to_queue(), ast_add_hint(), ast_bridge_depart(), ast_bridge_destroy(), ast_bridge_dtmf_stream(), ast_bridge_merge(), ast_bridge_remove(), ast_bridge_suspend(), ast_bridge_unsuspend(), ast_change_hint(), ast_change_name(), ast_do_masquerade(), ast_extension_state_add_destroy(), ast_extension_state_del(), ast_get_indication_tone(), ast_get_indication_zone(), ast_hook_send_action(), ast_manager_unregister(), ast_merge_contexts_and_delete(), ast_register_indication_country(), ast_remove_hint(), ast_set_indication_country(), ast_taskprocessor_get(), ast_taskprocessor_unreference(), ast_unregister_indication_country(), astman_verify_session_readpermissions(), astman_verify_session_writepermissions(), attended_abort_transfer(), auth_http_callback(), awesome_locking(), bridge_channel_join(), bridge_channel_join_multithreaded(), bridge_channel_join_singlethreaded(), bridge_thread(), build_callno_limits(), build_parkinglot(), build_peer(), build_reply_digest(), calendar_destructor(), change_callid_pvt(), check_bridge(), clear_stats(), cli_fax_show_sessions(), compare_weight(), complete_core_show_hint(), complete_queue_remove_member(), complete_sip_user(), conf_run(), create_addr_from_peer(), event_update_cache(), extension_state_cb(), find_queue_by_name_rt(), find_session(), find_session_by_nonce(), generic_fax_exec(), generic_http_callback(), generic_thread_loop(), get_input(), get_member_penalty(), get_member_status(), get_unused_callno(), handle_cli_misdn_send_facility(), handle_request_subscribe(), handle_show_hint(), handle_show_hints(), handle_showmanconn(), handle_statechange(), inprocess_count(), internal_ao2_callback(), internal_ao2_iterator_next(), internal_ao2_link(), is_our_turn(), join_conference_bridge(), join_queue(), leave_conference_bridge(), leave_queue(), load_indications(), local_answer(), local_bridgedchannel(), local_call(), local_devicestate(), local_digit_begin(), local_digit_end(), local_fixup(), local_indicate(), local_queryoption(), local_queue_frame(), local_sendhtml(), local_sendtext(), local_setoption(), local_write(), locals_show(), manager_optimize_away(), manager_queues_status(), manager_queues_summary(), member_add_to_queue(), member_call_pending_clear(), member_call_pending_set(), member_remove_from_queue(), menu_callback(), moh_class_destructor(), moh_release(), mohalloc(), monmp3thread(), multiplexed_add_or_remove(), multiplexed_bridge_create(), multiplexed_bridge_destroy(), multiplexed_thread_function(), on_dns_update_peer(), peercnt_add(), peercnt_remove(), peers_data_provider_get(), play_prompt_to_channel(), post_join_unmarked(), process_events(), process_message(), pthread_timer_ack(), pthread_timer_disable_continuous(), pthread_timer_enable_continuous(), pthread_timer_get_event(), pthread_timer_open(), pthread_timer_set_rate(), purge_sessions(), queue_function_qac(), queue_function_qac_dep(), queue_function_queuememberlist(), queue_function_queuememberpaused(), queue_function_queuememberstatus(), queue_function_queuewaitingcount(), queue_function_var(), queues_data_provider_get(), recalc_holdtime(), record_abandoned(), register_verify(), reload_queues(), reload_single_member(), reload_single_queue(), remove_from_queue(), replace_callno(), ring_entry(), run_timer(), schedule_calendar_event(), session_do(), set_eventmask(), set_member_paused(), set_member_penalty(), set_queue_variables(), sip_poke_all_peers(), sip_prune_realtime(), sip_send_mwi_to_peer(), sip_show_inuse(), sip_show_user(), sip_show_users(), sip_tcptls_write(), sla_add_trunk_to_station(), sla_build_station(), sla_build_trunk(), sla_change_trunk_state(), sla_queue_event_conf(), sla_show_stations(), sla_show_trunks(), sla_state(), sla_station_exec(), sla_station_is_marked(), sla_station_mark(), sla_trunk_is_marked(), sla_trunk_mark(), smart_bridge_operation(), softmix_bridge_thread(), spandsp_fax_cli_show_session(), timerfd_timer_ack(), timerfd_timer_disable_continuous(), timerfd_timer_enable_continuous(), timerfd_timer_get_event(), timerfd_timer_set_rate(), try_calling(), update_call_counter(), update_peer_lastmsgssent(), update_queue(), and update_realtime_members().
#define ao2_ref | ( | o, | |||
delta | ) | __ao2_ref((o), (delta)) |
Definition at line 472 of file astobj2.h.
Referenced by __ast_data_add(), __ast_data_register(), __ast_data_search_cmp_structure(), __ast_read(), __data_result_print_cli(), __find_callno(), __queues_show(), __sip_destroy(), __unload_module(), _ast_odbc_request_obj2(), _sip_tcp_helper_thread(), acf_faxopt_read(), acf_faxopt_write(), action_meetmelist(), add_calltoken_ignore(), add_cc_call_info_to_response(), add_event_to_list(), add_to_queue(), admin_exec(), alias_show(), announce_thread(), ao2_iterator_destroy(), ao2_iterator_init(), app_exec(), ast_add_hint(), ast_bridge_destroy(), ast_bridge_impart(), ast_bridge_join(), ast_bridge_merge(), ast_bridge_new(), ast_calendar_unref_event(), ast_cel_check_retire_linkedid(), ast_cel_engine_term(), ast_cel_linkedid_ref(), ast_cel_report_event(), ast_change_hint(), ast_closestream(), ast_config_text_file_save(), ast_data_free(), ast_data_iterator_end(), ast_data_iterator_next(), ast_data_search_match(), ast_event_get_cached(), ast_event_queue(), ast_extension_state_add_destroy(), ast_extension_state_del(), ast_merge_contexts_and_delete(), ast_moh_destroy(), ast_remove_hint(), ast_rtcp_write(), ast_rtp_instance_destroy(), ast_rtp_instance_make_compatible(), ast_rtp_instance_new(), ast_rtp_prop_set(), ast_rtp_raw_write(), ast_rtp_read(), ast_rtp_stop(), ast_settimeout_full(), ast_taskprocessor_get(), ast_taskprocessor_unreference(), ast_tcptls_client_create(), ast_tcptls_client_start(), ast_tcptls_server_root(), ast_tone_zone_ref(), ast_tone_zone_sound_ref(), ast_tone_zone_sound_unref(), ast_tone_zone_unref(), bridge_channel_join(), bridge_channel_thread(), bridge_thread(), build_callno_limits(), build_conf(), build_dialplan_useage_map(), build_mansession(), caldav_destructor(), calendar_destructor(), calendar_devstate_change(), calendar_event_notify(), calendar_query_exec(), callattempt_free(), calltoken_required(), cb_events(), cc_handle_publish_error(), chan_list_destructor(), channel_admin_exec(), channels_shutdown(), clear_queue(), cli_alias_passthrough(), cli_fax_show_session(), cli_fax_show_sessions(), cli_tps_ping(), cli_tps_report(), compare_weight(), complete_core_show_hint(), complete_queue_remove_member(), complete_userno(), conf_free(), conf_queue_dtmf(), conf_run(), copy_parkinglot(), copy_socket_data(), create_callno_pools(), create_esc_entry(), create_trunk_ref(), data_filter_add_nodes(), data_filter_alloc(), data_filter_destructor(), data_filter_find(), data_filter_generate(), data_filter_release(), data_get_xml_add_child(), data_odbc_provider_handler(), data_provider_create(), data_provider_destructor(), data_provider_find(), data_provider_new(), data_provider_print_cli(), data_provider_release(), data_provider_release_all(), data_result_create(), data_result_destructor(), data_result_find_child(), data_result_generate(), data_result_generate_node(), data_result_get_node(), data_result_manager_output(), data_search_alloc(), data_search_cmp_bool(), data_search_cmp_char(), data_search_cmp_dbl(), data_search_cmp_int(), data_search_cmp_ipaddr(), data_search_cmp_ptr(), data_search_cmp_string(), data_search_cmp_uint(), data_search_create(), data_search_destructor(), data_search_find(), data_search_get_node(), data_search_release(), destroy_callback(), destroy_escs(), destroy_hint(), destroy_queue(), destroy_session(), dialgroup_read(), dialgroup_write(), dialog_ref_debug(), dialog_unref_debug(), do_notify(), do_parking_thread(), dump_queue_members(), end_bridge_callback(), end_bridge_callback_data_fixup(), event_notification_duplicate(), event_shutdown(), event_update_cache(), eventlist_destroy(), eventlist_destructor(), eventlist_duplicate(), ewscal_destructor(), exchangecal_destructor(), expire_register(), extension_state_cb(), fax_session_new(), fax_session_reserve(), fax_session_tab_complete(), features_shutdown(), find_details(), find_hint_by_cb_id(), find_or_create_details(), find_queue_by_name_rt(), free_members(), generic_fax_exec(), get_destination(), get_member_penalty(), get_member_status(), group_destroy(), gtalk_get_rtp_peer(), handle_cc_notify(), handle_cc_subscribe(), handle_cli_iax2_set_debug(), handle_cli_iax2_show_callno_limits(), handle_cli_odbc_show(), handle_cli_status(), handle_event(), handle_feature_show(), handle_parkedcalls(), handle_response_subscribe(), handle_show_hint(), handle_show_hints(), handle_sip_publish_initial(), handle_sip_publish_modify(), handle_sip_publish_refresh(), handle_sip_publish_remove(), handle_statechange(), handle_tcptls_connection(), hints_data_provider_get(), httpd_helper_thread(), iax2_destroy(), icalendar_destructor(), indications_shutdown(), inprocess_count(), interface_exists(), internal_ao2_callback(), jingle_get_rtp_peer(), join_conference_bridge(), kqueue_timer_ack(), kqueue_timer_close(), kqueue_timer_disable_continuous(), kqueue_timer_enable_continuous(), kqueue_timer_get_event(), kqueue_timer_open(), kqueue_timer_set_rate(), leave_conference_bridge(), load_config(), load_module(), load_objects(), load_odbc_config(), local_answer(), local_call(), local_devicestate(), local_digit_begin(), local_digit_end(), local_hangup(), local_indicate(), local_request(), local_sendhtml(), local_sendtext(), local_setoption(), local_write(), locals_show(), manager_optimize_away(), manager_parking_status(), manager_queues_status(), manager_queues_summary(), meetme_menu_admin(), meetme_menu_admin_extended(), meetme_show_cmd(), meetmemute(), mgcp_get_rtp_peer(), misdn_attempt_transfer(), moh_rescan_files(), multiplexed_add_or_remove(), multiplexed_bridge_create(), multiplexed_bridge_destroy(), multiplexed_thread_function(), new_iax(), num_available_members(), odbc_class_destructor(), odbc_obj_destructor(), odbc_release_obj2(), oh323_get_rtp_peer(), parkinglot_addref(), parkinglot_unref(), parse_apps(), parse_moved_contact(), pbx_shutdown(), peer_ref(), peer_unref(), peercnt_add(), peercnt_modify(), peercnt_remove_by_addr(), peercnt_remove_cb(), peers_data_provider_get(), proxy_from_config(), pthread_timer_ack(), pthread_timer_close(), pthread_timer_disable_continuous(), pthread_timer_enable_continuous(), pthread_timer_get_event(), pthread_timer_open(), pthread_timer_set_rate(), publish_expire(), queue_function_qac(), queue_function_qac_dep(), queue_function_queuememberlist(), queue_function_queuememberpaused(), queue_function_queuememberstatus(), queue_ref(), queue_ringing_trunk(), queue_unref(), queues_data_provider_get_helper(), realtime_common(), receivefax_exec(), ref_proxy(), ref_pvt(), reload(), reload_single_member(), remove_from_queue(), replace_callno(), rt_handle_member_record(), sched_delay_remove(), sendfax_exec(), session_details_new(), session_do(), set_fn(), set_member_paused(), set_member_penalty(), set_peer_defaults(), set_peercnt_limit(), set_socket_transport(), sip_cc_monitor_suspend(), sip_destroy_peer(), sip_get_rtp_peer(), sip_get_trtp_peer(), sip_get_vrtp_peer(), sip_handle_cc(), sip_monitor_instance_init(), sip_prepare_socket(), sip_tcp_locate(), skinny_get_rtp_peer(), skinny_get_vrtp_peer(), sla_add_trunk_to_station(), sla_calc_station_delays(), sla_change_trunk_state(), sla_choose_idle_trunk(), sla_choose_ringing_trunk(), sla_create_failed_station(), sla_create_ringing_station(), sla_create_station_ref(), sla_destroy(), sla_event_destroy(), sla_failed_station_destroy(), sla_find_trunk_ref(), sla_find_trunk_ref_byname(), sla_handle_dial_state_event(), sla_queue_event_conf(), sla_queue_event_full(), sla_ringing_station_destroy(), sla_ringing_trunk_destroy(), sla_show_stations(), sla_show_trunks(), sla_station_exec(), sla_station_is_marked(), sla_station_ref_destructor(), sla_station_release_refs(), sla_stop_ringing_trunk(), sla_trunk_is_marked(), sla_trunk_ref_destructor(), sla_trunk_release_refs(), timerfd_timer_ack(), timerfd_timer_close(), timerfd_timer_disable_continuous(), timerfd_timer_enable_continuous(), timerfd_timer_get_event(), timerfd_timer_open(), timerfd_timer_set_rate(), tps_taskprocessor_tab_complete(), transmit_publish(), try_calling(), unistim_get_rtp_peer(), unload_module(), unref_caldav(), unref_calendar(), unref_ewscal(), unref_exchangecal(), unref_icalendar(), unref_instance_cond(), unref_mansession(), unref_profile(), unref_pvt(), unref_route(), unref_user(), update_queue(), update_realtime_members(), user_ref(), user_unref(), and xml_translate().
#define ao2_t_alloc | ( | data_size, | |||
destructor_fn, | |||||
debug_msg | ) | __ao2_alloc_debug((data_size), (destructor_fn), (debug_msg), __FILE__, __LINE__, __PRETTY_FUNCTION__, 0) |
Allocate and initialize an object.
data_size | The sizeof() of the user-defined structure. | |
destructor_fn | The destructor function (can be NULL) | |
debug_msg |
Allocates a struct astobj2 with sufficient space for the user-defined structure.
Definition at line 424 of file astobj2.h.
Referenced by __init_manager(), add_realm_authentication(), alloc_queue(), ast_srtp_policy_alloc(), build_peer(), cc_agent_init(), cc_core_init_instance(), cc_device_monitor_init(), cc_extension_monitor_init(), cc_interfaces_datastore_init(), create_epa_entry(), create_new_generic_list(), sip_alloc(), and temp_peer().
#define ao2_t_callback | ( | c, | |||
flags, | |||||
cb_fn, | |||||
arg, | |||||
tag | ) | __ao2_callback((c), (flags), (cb_fn), (arg)) |
ao2_callback() is a generic function that applies cb_fn() to all objects in a container, as described below.
c | A pointer to the container to operate on. | |
flags | A set of flags specifying the operation to perform, partially used by the container code, but also passed to the callback.
| |
cb_fn | A function pointer, that will be called on all objects, to see if they match. This function returns CMP_MATCH if the object is matches the criteria; CMP_STOP if the traversal should immediately stop, or both (via bitwise ORing), if you find a match and want to end the traversal, and 0 if the object is not a match, but the traversal should continue. This is the function that is applied to each object traversed. Its arguments are: (void *obj, void *arg, int flags), where: obj is an object arg is the same as arg passed into ao2_callback flags is the same as flags passed into ao2_callback (flags are also used by ao2_callback). | |
arg | passed to the callback. | |
tag | used for debuging. |
If the function returns any objects, their refcount is incremented, and the caller is in charge of decrementing them once done.
Typically, ao2_callback() is used for two purposes:
This function searches through a container and performs operations on objects according on flags passed. XXX describe better The comparison is done calling the compare function set implicitly. The p pointer can be a pointer to an object or to a key, we can say this looking at flags value. If p points to an object we will search for the object pointed by this value, otherwise we serch for a key value. If the key is not unique we only find the first matching valued.
The use of flags argument is the follow:
OBJ_UNLINK unlinks the object found OBJ_NODATA on match, do return an object Callbacks use OBJ_NODATA as a default functions such as find() do OBJ_MULTIPLE return multiple matches Default is no. OBJ_POINTER the pointer is an object pointer
Definition at line 909 of file astobj2.h.
Referenced by __init_manager(), ast_cc_agent_callback(), ast_cc_monitor_count(), ast_moh_destroy(), ast_srtp_destroy(), cc_cli_output_status(), do_monitor(), find_call(), get_mohbydigit(), handle_cc_kill(), load_config(), load_moh_classes(), reload_config(), sip_show_channels(), sip_show_channelstats(), sip_show_objects(), unlink_peers_from_tables(), and unload_module().
#define ao2_t_callback_data | ( | arg1, | |||
arg2, | |||||
arg3, | |||||
arg4, | |||||
arg5, | |||||
arg6 | ) | __ao2_callback_data((arg1), (arg2), (arg3), (arg4), (arg5)) |
ao2_callback_data() is a generic function that applies cb_fn() to all objects in a container. It is functionally identical to ao2_callback() except that instead of taking an ao2_callback_fn *, it takes an ao2_callback_data_fn *, and allows the caller to pass in arbitrary data.
This call would be used instead of ao2_callback() when the caller needs to pass OBJ_POINTER as part of the flags argument (which in turn requires passing in a prototype ao2 object for 'arg') and also needs access to other non-global data to complete it's comparison or task.
See the documentation for ao2_callback() for argument descriptions.
Definition at line 942 of file astobj2.h.
Referenced by cccancel_exec(), ccreq_exec(), count_agents(), find_peer(), kill_duplicate_offers(), and match_filter().
#define ao2_t_container_alloc | ( | arg1, | |||
arg2, | |||||
arg3, | |||||
arg4 | ) | __ao2_container_alloc_debug((arg1), (arg2), (arg3), (arg4), __FILE__, __LINE__, __PRETTY_FUNCTION__, 0) |
Allocate and initialize a container with the desired number of buckets.
We allocate space for a struct astobj_container, struct container and the buckets[] array.
arg1 | Number of buckets for hash | |
arg2 | Pointer to a function computing a hash value. | |
arg3 | Pointer to a function comparating key-value with a string. (can be NULL) | |
arg4 |
Definition at line 728 of file astobj2.h.
Referenced by ast_cc_init(), load_module(), and res_srtp_new().
#define ao2_t_find | ( | arg1, | |||
arg2, | |||||
arg3, | |||||
arg4 | ) | __ao2_find((arg1), (arg2), (arg3)) |
ao2_find() is a short hand for ao2_callback(c, flags, c->cmp_fn, arg) XXX possibly change order of arguments ?
Definition at line 963 of file astobj2.h.
Referenced by _sip_tcp_helper_thread(), build_peer(), find_call(), find_cc_core_instance(), find_generic_monitor_instance_list(), find_peer(), find_policy(), find_queue_by_name_rt(), get_member_penalty(), get_sip_pvt_byid_locked(), load_realtime_queue(), queue_function_queuememberlist(), queue_function_queuewaitingcount(), queue_function_var(), reload_queue_members(), reload_single_queue(), remove_from_queue(), sip_prune_realtime(), and sip_tcptls_write().
#define ao2_t_iterator_next | ( | arg1, | |||
arg2 | ) | __ao2_iterator_next((arg1)) |
Definition at line 1125 of file astobj2.h.
Referenced by __queues_show(), _sip_show_peers(), clear_stats(), compare_weight(), complete_core_id(), complete_queue(), complete_queue_remove_member(), complete_sip_peer(), complete_sip_registered_peer(), complete_sip_user(), complete_sipch(), extension_state_cb(), handle_cli_moh_show_classes(), handle_cli_moh_show_files(), handle_statechange(), manager_queues_status(), manager_queues_summary(), queue_function_queuememberpaused(), queue_function_queuememberstatus(), set_member_paused(), set_member_penalty(), sip_poke_all_peers(), sip_prune_realtime(), sip_show_channel(), sip_show_history(), sip_show_inuse(), sip_show_tcp(), sip_show_users(), unload_module(), and update_queue().
#define ao2_t_link | ( | arg1, | |||
arg2, | |||||
arg3 | ) | __ao2_link((arg1), (arg2)) |
Add an object to a container.
arg1 | the container to operate on. | |
arg2 | the object to be added. | |
arg3 | used for debuging. |
NULL | on errors. | |
newobj | on success. |
This function inserts an object in a container according its key.
Definition at line 784 of file astobj2.h.
Referenced by __init_manager(), _moh_register(), ast_srtp_add_stream(), ast_srtp_create(), authenticate(), cc_core_init_instance(), change_callid_pvt(), create_new_generic_list(), dialog_needdestroy(), parse_register_contact(), realtime_peer(), register_verify(), reload_config(), sip_alloc(), sip_prune_realtime(), and sip_threadinfo_create().
#define ao2_t_ref | ( | o, | |||
delta, | |||||
tag | ) | __ao2_ref((o), (delta)) |
Reference/unreference an object and return the old refcount.
o | A pointer to the object | |
delta | Value to add to the reference counter. | |
tag | used for debugging |
Increase/decrease the reference counter according the value of delta.
If the refcount goes to zero, the object is destroyed.
Definition at line 471 of file astobj2.h.
Referenced by __init_manager(), __sip_destroy(), _sip_show_peer(), _sip_tcp_helper_thread(), action_find(), ast_hook_send_action(), ast_manager_register2(), ast_manager_register_struct(), ast_manager_unregister(), ast_srtp_add_stream(), ast_srtp_change_source(), ast_srtp_destroy(), ast_srtp_policy_destroy(), ast_srtp_unprotect(), authenticate(), build_peer(), build_reply_digest(), cc_ref(), cc_shutdown(), cc_unref(), check_peer_ok(), create_addr_from_peer(), data_shutdown(), dialog_dump_func(), handle_request_do(), load_module(), local_attended_transfer(), manager_free_user(), peer_dump_func(), process_message(), ref_peer(), reload_config(), session_destructor(), session_instance_destructor(), sip_alloc(), sip_call(), sip_cc_monitor_cancel_available_timer(), sip_cc_monitor_request_cc(), sip_destroy_peer(), sip_monitor_instance_destructor(), sip_prepare_socket(), sip_reload(), sip_show_channel(), sip_show_history(), sip_show_settings(), sip_show_tcp(), sip_tcp_locate(), sip_tcptls_write(), sip_threadinfo_create(), sip_threadinfo_destructor(), tcptls_stream_close(), tcptls_stream_fopen(), temp_peer(), tps_shutdown(), unload_module(), and unref_peer().
#define ao2_t_unlink | ( | arg1, | |||
arg2, | |||||
arg3 | ) | __ao2_unlink((arg1), (arg2)) |
Remove an object from a container.
arg1 | the container | |
arg2 | the object to unlink | |
arg3 | tag for debugging |
NULL,always |
Definition at line 816 of file astobj2.h.
Referenced by _sip_tcp_helper_thread(), ast_srtp_add_stream(), build_peer(), cc_complete(), cc_failed(), cc_generic_monitor_destructor(), dialog_unlink_all(), expire_register(), parse_register_contact(), sip_prepare_socket(), and sip_prune_realtime().
#define ao2_trylock | ( | a | ) | __ao2_trylock(a, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a) |
Definition at line 506 of file astobj2.h.
Referenced by caldav_load_calendar(), ewscal_load_calendar(), exchangecal_load_calendar(), ical_load_calendar(), and multiplexed_thread_function().
#define ao2_unlink | ( | arg1, | |||
arg2 | ) | __ao2_unlink((arg1), (arg2)) |
Definition at line 817 of file astobj2.h.
Referenced by ast_cel_check_retire_linkedid(), ast_change_name(), ast_channel_release(), ast_data_remove_node(), ast_do_masquerade(), ast_hangup(), ast_taskprocessor_unreference(), build_calendar(), build_user(), conf_run(), create_new_sip_etag(), data_provider_release(), data_provider_release_all(), delete_profiles(), delete_routes(), delete_users(), destroy_pvts(), dialgroup_write(), generic_fax_exec(), get_lock(), handle_cli_iax2_prune_realtime(), handle_sip_publish_remove(), kqueue_timer_close(), leave_conference_bridge(), local_hangup(), local_request(), member_remove_from_queue(), merge_events_cb(), multiplexed_bridge_destroy(), on_dns_update_peer(), peercnt_remove(), prune_users(), publish_expire(), reload(), reload_single_member(), remove_by_peercallno(), remove_by_transfercallno(), session_destroy(), sip_cc_monitor_destructor(), timerfd_timer_close(), and unlink_peer().
#define ao2_unlock | ( | a | ) | __ao2_unlock(a, __FILE__, __PRETTY_FUNCTION__, __LINE__, #a) |
Definition at line 497 of file astobj2.h.
Referenced by __ao2_iterator_next(), __ao2_iterator_next_debug(), __ao2_link(), __ao2_link_debug(), __ast_manager_event_multichan(), __queues_show(), _sip_show_peer(), _sip_show_peers(), _sip_show_peers_one(), _sip_tcp_helper_thread(), action_waitevent(), add_calltoken_ignore(), add_to_queue(), ast_add_hint(), ast_bridge_depart(), ast_bridge_destroy(), ast_bridge_dtmf_stream(), ast_bridge_merge(), ast_bridge_remove(), ast_bridge_suspend(), ast_bridge_unsuspend(), ast_change_hint(), ast_change_name(), ast_do_masquerade(), ast_extension_state_add_destroy(), ast_extension_state_del(), ast_get_indication_tone(), ast_get_indication_zone(), ast_hook_send_action(), ast_manager_unregister(), ast_merge_contexts_and_delete(), ast_register_indication_country(), ast_remove_hint(), ast_set_indication_country(), ast_taskprocessor_get(), ast_taskprocessor_unreference(), ast_unregister_indication_country(), astman_is_authed(), astman_verify_session_readpermissions(), astman_verify_session_writepermissions(), attended_abort_transfer(), auth_http_callback(), awesome_locking(), bridge_channel_join(), bridge_channel_join_multithreaded(), bridge_channel_join_singlethreaded(), bridge_thread(), build_callno_limits(), build_parkinglot(), build_peer(), build_reply_digest(), caldav_load_calendar(), calendar_destructor(), change_callid_pvt(), check_bridge(), clear_stats(), cli_fax_show_sessions(), compare_weight(), complete_core_show_hint(), complete_queue_remove_member(), complete_sip_user(), conf_run(), create_addr_from_peer(), event_update_cache(), ewscal_load_calendar(), exchangecal_load_calendar(), extension_state_cb(), find_queue_by_name_rt(), find_session(), find_session_by_nonce(), generic_fax_exec(), generic_http_callback(), generic_thread_loop(), get_input(), get_member_penalty(), get_member_status(), get_unused_callno(), handle_cli_misdn_send_facility(), handle_request_subscribe(), handle_show_hint(), handle_show_hints(), handle_showmanconn(), handle_statechange(), ical_load_calendar(), inprocess_count(), internal_ao2_callback(), is_our_turn(), join_conference_bridge(), join_queue(), leave_conference_bridge(), leave_queue(), load_indications(), local_answer(), local_bridgedchannel(), local_call(), local_devicestate(), local_digit_begin(), local_digit_end(), local_fixup(), local_hangup(), local_indicate(), local_queryoption(), local_queue_frame(), local_sendhtml(), local_sendtext(), local_setoption(), local_write(), locals_show(), manager_optimize_away(), manager_queues_status(), manager_queues_summary(), member_add_to_queue(), member_call_pending_clear(), member_call_pending_set(), member_remove_from_queue(), menu_callback(), moh_class_destructor(), moh_release(), mohalloc(), monmp3thread(), multiplexed_add_or_remove(), multiplexed_bridge_create(), multiplexed_bridge_destroy(), multiplexed_thread_function(), on_dns_update_peer(), peercnt_add(), peercnt_remove(), peers_data_provider_get(), play_prompt_to_channel(), post_join_unmarked(), process_events(), process_message(), pthread_timer_ack(), pthread_timer_disable_continuous(), pthread_timer_enable_continuous(), pthread_timer_get_event(), pthread_timer_open(), pthread_timer_set_rate(), purge_sessions(), queue_function_qac(), queue_function_qac_dep(), queue_function_queuememberlist(), queue_function_queuememberpaused(), queue_function_queuememberstatus(), queue_function_queuewaitingcount(), queue_function_var(), queues_data_provider_get(), recalc_holdtime(), record_abandoned(), register_verify(), reinvite_timeout(), reload_queues(), reload_single_member(), reload_single_queue(), remove_from_queue(), replace_callno(), ring_entry(), run_timer(), schedule_calendar_event(), session_do(), set_eventmask(), set_member_paused(), set_member_penalty(), set_queue_variables(), sip_poke_all_peers(), sip_prune_realtime(), sip_send_mwi_to_peer(), sip_show_inuse(), sip_show_user(), sip_show_users(), sip_tcptls_write(), sla_add_trunk_to_station(), sla_build_station(), sla_build_trunk(), sla_change_trunk_state(), sla_queue_event_conf(), sla_show_stations(), sla_show_trunks(), sla_state(), sla_station_exec(), sla_station_is_marked(), sla_station_mark(), sla_trunk_is_marked(), sla_trunk_mark(), smart_bridge_operation(), softmix_bridge_thread(), spandsp_fax_cli_show_session(), timerfd_timer_ack(), timerfd_timer_disable_continuous(), timerfd_timer_enable_continuous(), timerfd_timer_get_event(), timerfd_timer_set_rate(), try_calling(), update_call_counter(), update_peer_lastmsgssent(), update_queue(), and update_realtime_members().
typedef int( ao2_callback_data_fn)(void *obj, void *arg, void *data, int flags) |
Type of a generic callback function.
obj | pointer to the (user-defined part) of an object. | |
arg | callback argument from ao2_callback() | |
data | arbitrary data from ao2_callback() | |
flags | flags from ao2_callback() |
The return values are a combination of enum _cb_results. Callback functions are used to search or manipulate objects in a container.
typedef int( ao2_callback_fn)(void *obj, void *arg, int flags) |
Type of a generic callback function.
obj | pointer to the (user-defined part) of an object. | |
arg | callback argument from ao2_callback() | |
flags | flags from ao2_callback() |
The return values are a combination of enum _cb_results. Callback functions are used to search or manipulate objects in a container.
typedef void(* ao2_destructor_fn)(void *) |
typedef int( ao2_hash_fn)(const void *obj, const int flags) |
Type of a generic function to generate a hash value from an object. flags is ignored at the moment. Eventually, it will include the value of OBJ_POINTER passed to ao2_callback().
enum _cb_results |
A callback function will return a combination of CMP_MATCH and CMP_STOP. The latter will terminate the search in a container.
enum ao2_iterator_flags |
Flags that can be passed to ao2_iterator_init() to modify the behavior of the iterator.
AO2_ITERATOR_DONTLOCK |
Prevents ao2_iterator_next() from locking the container while retrieving the next object from it. |
AO2_ITERATOR_MALLOCD |
Indicates that the iterator was dynamically allocated by astobj2 API and should be freed by ao2_iterator_destroy(). |
AO2_ITERATOR_UNLINK |
Indicates that before the iterator returns an object from the container being iterated, the object should be unlinked from the container. |
Definition at line 1071 of file astobj2.h.
01071 { 01072 /*! Prevents ao2_iterator_next() from locking the container 01073 * while retrieving the next object from it. 01074 */ 01075 AO2_ITERATOR_DONTLOCK = (1 << 0), 01076 /*! Indicates that the iterator was dynamically allocated by 01077 * astobj2 API and should be freed by ao2_iterator_destroy(). 01078 */ 01079 AO2_ITERATOR_MALLOCD = (1 << 1), 01080 /*! Indicates that before the iterator returns an object from 01081 * the container being iterated, the object should be unlinked 01082 * from the container. 01083 */ 01084 AO2_ITERATOR_UNLINK = (1 << 2), 01085 };
enum search_flags |
Flags passed to ao2_callback() and ao2_hash_fn() to modify its behaviour.
OBJ_UNLINK |
Unlink the object for which the callback function returned CMP_MATCH. |
OBJ_NODATA |
On match, don't return the object hence do not increase its refcount. |
OBJ_MULTIPLE |
Don't stop at the first match in ao2_callback() unless the result of of the callback function == (CMP_STOP | CMP_MATCH). |
OBJ_POINTER |
obj is an object of the same type as the one being searched for, so use the object's hash function for optimized searching. The search function is unaffected (i.e. use the one passed as argument, or match_by_addr if none specified). |
OBJ_CONTINUE |
Continue if a match is not found in the hashed out bucket. This flag is to be used in combination with OBJ_POINTER. This tells the ao2_callback() core to keep searching through the rest of the buckets if a match is not found in the starting bucket defined by the hash value on the argument. |
Definition at line 660 of file astobj2.h.
00660 { 00661 /*! Unlink the object for which the callback function 00662 * returned CMP_MATCH. 00663 */ 00664 OBJ_UNLINK = (1 << 0), 00665 /*! On match, don't return the object hence do not increase 00666 * its refcount. 00667 */ 00668 OBJ_NODATA = (1 << 1), 00669 /*! Don't stop at the first match in ao2_callback() unless the result of 00670 * of the callback function == (CMP_STOP | CMP_MATCH). 00671 */ 00672 OBJ_MULTIPLE = (1 << 2), 00673 /*! obj is an object of the same type as the one being searched for, 00674 * so use the object's hash function for optimized searching. 00675 * The search function is unaffected (i.e. use the one passed as 00676 * argument, or match_by_addr if none specified). 00677 */ 00678 OBJ_POINTER = (1 << 3), 00679 /*! 00680 * \brief Continue if a match is not found in the hashed out bucket 00681 * 00682 * This flag is to be used in combination with OBJ_POINTER. This tells 00683 * the ao2_callback() core to keep searching through the rest of the 00684 * buckets if a match is not found in the starting bucket defined by 00685 * the hash value on the argument. 00686 */ 00687 OBJ_CONTINUE = (1 << 4), 00688 };
void* __ao2_alloc | ( | const size_t | data_size, | |
ao2_destructor_fn | destructor_fn | |||
) |
Definition at line 354 of file astobj2.c.
References internal_ao2_alloc().
Referenced by __ao2_container_alloc().
00355 { 00356 return internal_ao2_alloc(data_size, destructor_fn, __FILE__, __LINE__, __FUNCTION__); 00357 }
void* __ao2_alloc_debug | ( | const size_t | data_size, | |
ao2_destructor_fn | destructor_fn, | |||
char * | tag, | |||
const char * | file, | |||
int | line, | |||
const char * | funcname, | |||
int | ref_debug | |||
) |
Definition at line 335 of file astobj2.c.
References ast_get_tid(), and internal_ao2_alloc().
Referenced by __ao2_container_alloc_debug(), __ast_channel_alloc_ap(), __ast_dummy_channel_alloc(), and _moh_class_malloc().
00337 { 00338 /* allocation */ 00339 void *obj; 00340 00341 if ((obj = internal_ao2_alloc(data_size, destructor_fn, file, line, funcname)) == NULL) { 00342 return NULL; 00343 } 00344 00345 if (ref_log) { 00346 fprintf(ref_log, "%p,+1,%d,%s,%d,%s,**constructor**,%s\n", obj, ast_get_tid(), file, line, funcname, tag); 00347 fflush(ref_log); 00348 } 00349 00350 /* return a pointer to the user data */ 00351 return obj; 00352 }
void* __ao2_callback | ( | struct ao2_container * | c, | |
enum search_flags | flags, | |||
ao2_callback_fn * | cb_fn, | |||
void * | arg | |||
) |
Definition at line 782 of file astobj2.c.
References DEFAULT, and internal_ao2_callback().
Referenced by __ao2_find(), __ao2_unlink(), and container_destruct().
00784 { 00785 return internal_ao2_callback(c,flags, cb_fn, arg, NULL, DEFAULT, NULL, NULL, 0, NULL); 00786 }
void* __ao2_callback_data | ( | struct ao2_container * | c, | |
enum search_flags | flags, | |||
ao2_callback_data_fn * | cb_fn, | |||
void * | arg, | |||
void * | data | |||
) |
Definition at line 796 of file astobj2.c.
References internal_ao2_callback(), and WITH_DATA.
00798 { 00799 return internal_ao2_callback(c, flags, cb_fn, arg, data, WITH_DATA, NULL, NULL, 0, NULL); 00800 }
void* __ao2_callback_data_debug | ( | struct ao2_container * | c, | |
enum search_flags | flags, | |||
ao2_callback_data_fn * | cb_fn, | |||
void * | arg, | |||
void * | data, | |||
char * | tag, | |||
char * | file, | |||
int | line, | |||
const char * | funcname | |||
) |
Definition at line 788 of file astobj2.c.
References internal_ao2_callback(), and WITH_DATA.
00792 { 00793 return internal_ao2_callback(c, flags, cb_fn, arg, data, WITH_DATA, tag, file, line, funcname); 00794 }
void* __ao2_callback_debug | ( | struct ao2_container * | c, | |
enum search_flags | flags, | |||
ao2_callback_fn * | cb_fn, | |||
void * | arg, | |||
char * | tag, | |||
char * | file, | |||
int | line, | |||
const char * | funcname | |||
) |
Definition at line 774 of file astobj2.c.
References DEFAULT, and internal_ao2_callback().
Referenced by __ao2_find_debug(), __ao2_unlink_debug(), and container_destruct_debug().
00778 { 00779 return internal_ao2_callback(c,flags, cb_fn, arg, NULL, DEFAULT, tag, file, line, funcname); 00780 }
struct ao2_container* __ao2_container_alloc | ( | const unsigned int | n_buckets, | |
ao2_hash_fn * | hash_fn, | |||
ao2_callback_fn * | cmp_fn | |||
) | [read] |
Definition at line 454 of file astobj2.c.
References __ao2_alloc(), container_destruct(), and internal_ao2_container_alloc().
00456 { 00457 /* XXX maybe consistency check on arguments ? */ 00458 /* compute the container size */ 00459 00460 const unsigned int num_buckets = hash_fn ? n_buckets : 1; 00461 size_t container_size = sizeof(struct ao2_container) + num_buckets * sizeof(struct bucket); 00462 struct ao2_container *c = __ao2_alloc(container_size, container_destruct); 00463 00464 return internal_ao2_container_alloc(c, num_buckets, hash_fn, cmp_fn); 00465 }
struct ao2_container* __ao2_container_alloc_debug | ( | const unsigned int | n_buckets, | |
ao2_hash_fn * | hash_fn, | |||
ao2_callback_fn * | cmp_fn, | |||
char * | tag, | |||
char * | file, | |||
int | line, | |||
const char * | funcname, | |||
int | ref_debug | |||
) | [read] |
Definition at line 441 of file astobj2.c.
References __ao2_alloc_debug(), container_destruct(), container_destruct_debug(), and internal_ao2_container_alloc().
00444 { 00445 /* XXX maybe consistency check on arguments ? */ 00446 /* compute the container size */ 00447 const unsigned int num_buckets = hash_fn ? n_buckets : 1; 00448 size_t container_size = sizeof(struct ao2_container) + num_buckets * sizeof(struct bucket); 00449 struct ao2_container *c = __ao2_alloc_debug(container_size, ref_debug ? container_destruct_debug : container_destruct, tag, file, line, funcname, ref_debug); 00450 00451 return internal_ao2_container_alloc(c, num_buckets, hash_fn, cmp_fn); 00452 }
void* __ao2_find | ( | struct ao2_container * | c, | |
void * | arg, | |||
enum search_flags | flags | |||
) |
Definition at line 810 of file astobj2.c.
References __ao2_callback(), and ao2_container::cmp_fn.
Referenced by _get_mohbyname().
00811 { 00812 return __ao2_callback(c, flags, c->cmp_fn, arg); 00813 }
void* __ao2_find_debug | ( | struct ao2_container * | c, | |
void * | arg, | |||
enum search_flags | flags, | |||
char * | tag, | |||
char * | file, | |||
int | line, | |||
const char * | funcname | |||
) |
the find function just invokes the default callback with some reasonable flags.
Definition at line 805 of file astobj2.c.
References __ao2_callback_debug(), and ao2_container::cmp_fn.
Referenced by _get_mohbyname().
00806 { 00807 return __ao2_callback_debug(c, flags, c->cmp_fn, arg, tag, file, line, funcname); 00808 }
void* __ao2_iterator_next | ( | struct ao2_iterator * | a | ) |
Definition at line 931 of file astobj2.c.
References __ao2_ref(), AO2_ITERATOR_DONTLOCK, ao2_unlock, ao2_iterator::c, ao2_iterator::flags, and internal_ao2_iterator_next().
00932 { 00933 struct bucket_entry *p = NULL; 00934 void *ret = NULL; 00935 00936 ret = internal_ao2_iterator_next(a, &p); 00937 00938 if (p) { 00939 /* inc refcount of returned object */ 00940 __ao2_ref(ret, 1); 00941 } 00942 00943 if (!(a->flags & AO2_ITERATOR_DONTLOCK)) 00944 ao2_unlock(a->c); 00945 00946 return ret; 00947 }
void* __ao2_iterator_next_debug | ( | struct ao2_iterator * | a, | |
char * | tag, | |||
char * | file, | |||
int | line, | |||
const char * | funcname | |||
) |
Definition at line 913 of file astobj2.c.
References __ao2_ref_debug(), AO2_ITERATOR_DONTLOCK, ao2_unlock, ao2_iterator::c, ao2_iterator::flags, and internal_ao2_iterator_next().
00914 { 00915 struct bucket_entry *p; 00916 void *ret = NULL; 00917 00918 ret = internal_ao2_iterator_next(a, &p); 00919 00920 if (p) { 00921 /* inc refcount of returned object */ 00922 __ao2_ref_debug(ret, 1, tag, file, line, funcname); 00923 } 00924 00925 if (!(a->flags & AO2_ITERATOR_DONTLOCK)) 00926 ao2_unlock(a->c); 00927 00928 return ret; 00929 }
void* __ao2_link | ( | struct ao2_container * | c, | |
void * | newobj | |||
) |
Definition at line 531 of file astobj2.c.
References __ao2_ref(), ao2_unlock, and internal_ao2_link().
Referenced by internal_ao2_callback().
00532 { 00533 struct bucket_entry *p = internal_ao2_link(c, user_data, __FILE__, __LINE__, __PRETTY_FUNCTION__); 00534 00535 if (p) { 00536 __ao2_ref(user_data, +1); 00537 ao2_unlock(c); 00538 } 00539 return p; 00540 }
void* __ao2_link_debug | ( | struct ao2_container * | c, | |
void * | new_obj, | |||
char * | tag, | |||
char * | file, | |||
int | line, | |||
const char * | funcname | |||
) |
Definition at line 520 of file astobj2.c.
References __ao2_ref_debug(), ao2_unlock, and internal_ao2_link().
Referenced by internal_ao2_callback().
00521 { 00522 struct bucket_entry *p = internal_ao2_link(c, user_data, file, line, funcname); 00523 00524 if (p) { 00525 __ao2_ref_debug(user_data, +1, tag, file, line, funcname); 00526 ao2_unlock(c); 00527 } 00528 return p; 00529 }
int __ao2_lock | ( | void * | a, | |
const char * | file, | |||
const char * | func, | |||
int | line, | |||
const char * | var | |||
) |
Lock an object.
a | A pointer to the object we want to lock. |
Definition at line 161 of file astobj2.c.
References __ast_pthread_mutex_lock(), ast_atomic_fetchadd_int(), INTERNAL_OBJ(), __priv_data::lock, and astobj2::priv_data.
00162 { 00163 struct astobj2 *p = INTERNAL_OBJ(user_data); 00164 00165 if (p == NULL) 00166 return -1; 00167 00168 #ifdef AO2_DEBUG 00169 ast_atomic_fetchadd_int(&ao2.total_locked, 1); 00170 #endif 00171 00172 return __ast_pthread_mutex_lock(file, line, func, var, &p->priv_data.lock); 00173 }
int __ao2_ref | ( | void * | o, | |
int | delta | |||
) |
Definition at line 248 of file astobj2.c.
References internal_ao2_ref().
Referenced by __ao2_iterator_next(), __ao2_link(), cd_cb(), and internal_ao2_callback().
00249 { 00250 return internal_ao2_ref(user_data, delta); 00251 }
int __ao2_ref_debug | ( | void * | o, | |
int | delta, | |||
const char * | tag, | |||
const char * | file, | |||
int | line, | |||
const char * | funcname | |||
) |
Definition at line 219 of file astobj2.c.
References ast_get_tid(), internal_ao2_ref(), and INTERNAL_OBJ().
Referenced by __ao2_iterator_next_debug(), __ao2_link_debug(), cd_cb_debug(), dialog_ref_debug(), dialog_unref_debug(), and internal_ao2_callback().
00220 { 00221 struct astobj2 *obj = INTERNAL_OBJ(user_data); 00222 int old_refcount = -1; 00223 00224 if (obj) { 00225 old_refcount = internal_ao2_ref(user_data, delta); 00226 } 00227 00228 if (ref_log && user_data) { 00229 if (!obj) { 00230 /* Invalid object: Bad magic number. */ 00231 fprintf(ref_log, "%p,%d,%d,%s,%d,%s,**invalid**,%s\n", 00232 user_data, delta, ast_get_tid(), file, line, funcname, tag); 00233 fflush(ref_log); 00234 } else if (old_refcount + delta == 0) { 00235 fprintf(ref_log, "%p,%d,%d,%s,%d,%s,**destructor**,%s\n", 00236 user_data, delta, ast_get_tid(), file, line, funcname, tag); 00237 fflush(ref_log); 00238 } else if (delta != 0) { 00239 fprintf(ref_log, "%p,%s%d,%d,%s,%d,%s,%d,%s\n", user_data, (delta < 0 ? "" : "+"), 00240 delta, ast_get_tid(), file, line, funcname, old_refcount, tag); 00241 fflush(ref_log); 00242 } 00243 } 00244 00245 return old_refcount; 00246 }
int __ao2_trylock | ( | void * | a, | |
const char * | file, | |||
const char * | func, | |||
int | line, | |||
const char * | var | |||
) |
Try locking-- (don't block if fail).
a | A pointer to the object we want to lock. |
Definition at line 189 of file astobj2.c.
References __ast_pthread_mutex_trylock(), ast_atomic_fetchadd_int(), INTERNAL_OBJ(), __priv_data::lock, and astobj2::priv_data.
00190 { 00191 struct astobj2 *p = INTERNAL_OBJ(user_data); 00192 int ret; 00193 00194 if (p == NULL) 00195 return -1; 00196 ret = __ast_pthread_mutex_trylock(file, line, func, var, &p->priv_data.lock); 00197 00198 #ifdef AO2_DEBUG 00199 if (!ret) 00200 ast_atomic_fetchadd_int(&ao2.total_locked, 1); 00201 #endif 00202 return ret; 00203 }
void* __ao2_unlink | ( | struct ao2_container * | c, | |
void * | obj | |||
) |
Definition at line 565 of file astobj2.c.
References __ao2_callback(), ao2_match_by_addr, INTERNAL_OBJ(), OBJ_NODATA, OBJ_POINTER, and OBJ_UNLINK.
00566 { 00567 if (INTERNAL_OBJ(user_data) == NULL) /* safety check on the argument */ 00568 return NULL; 00569 00570 __ao2_callback(c, OBJ_UNLINK | OBJ_POINTER | OBJ_NODATA, ao2_match_by_addr, user_data); 00571 00572 return NULL; 00573 }
void* __ao2_unlink_debug | ( | struct ao2_container * | c, | |
void * | obj, | |||
char * | tag, | |||
char * | file, | |||
int | line, | |||
const char * | funcname | |||
) |
Definition at line 554 of file astobj2.c.
References __ao2_callback_debug(), ao2_match_by_addr, INTERNAL_OBJ(), OBJ_NODATA, OBJ_POINTER, and OBJ_UNLINK.
00556 { 00557 if (INTERNAL_OBJ(user_data) == NULL) /* safety check on the argument */ 00558 return NULL; 00559 00560 __ao2_callback_debug(c, OBJ_UNLINK | OBJ_POINTER | OBJ_NODATA, ao2_match_by_addr, user_data, tag, file, line, funcname); 00561 00562 return NULL; 00563 }
int __ao2_unlock | ( | void * | a, | |
const char * | file, | |||
const char * | func, | |||
int | line, | |||
const char * | var | |||
) |
Unlock an object.
a | A pointer to the object we want unlock. |
Definition at line 175 of file astobj2.c.
References __ast_pthread_mutex_unlock(), ast_atomic_fetchadd_int(), INTERNAL_OBJ(), __priv_data::lock, and astobj2::priv_data.
00176 { 00177 struct astobj2 *p = INTERNAL_OBJ(user_data); 00178 00179 if (p == NULL) 00180 return -1; 00181 00182 #ifdef AO2_DEBUG 00183 ast_atomic_fetchadd_int(&ao2.total_locked, -1); 00184 #endif 00185 00186 return __ast_pthread_mutex_unlock(file, line, func, var, &p->priv_data.lock); 00187 }
void ao2_bt | ( | void | ) |
Definition at line 90 of file astobj2.c.
References ast_bt_get_symbols(), ast_std_free(), ast_verbose, and N1.
00091 { 00092 int c, i; 00093 #define N1 20 00094 void *addresses[N1]; 00095 char **strings; 00096 00097 c = backtrace(addresses, N1); 00098 strings = ast_bt_get_symbols(addresses,c); 00099 ast_verbose("backtrace returned: %d\n", c); 00100 for(i = 0; i < c; i++) { 00101 ast_verbose("%d: %p %s\n", i, addresses[i], strings[i]); 00102 } 00103 ast_std_free(strings); 00104 }
int ao2_container_count | ( | struct ao2_container * | c | ) |
Returns the number of elements in a container.
return the number of elements in the container
Definition at line 470 of file astobj2.c.
References ao2_container::elements.
Referenced by __ast_data_register(), __ast_manager_event_multichan(), __queues_show(), _sip_show_peers(), ast_active_channels(), ast_data_search_match(), ast_merge_contexts_and_delete(), ast_srtp_unprotect(), ast_tone_zone_count(), calc_metric(), cc_cli_output_status(), cleanup(), cli_fax_show_sessions(), cli_tps_report(), data_odbc_provider_handler(), data_provider_release(), data_provider_release_all(), do_monitor(), do_timing(), endelm(), get_unused_callno(), handle_cli_iax2_show_callno_limits(), handle_show_hint(), handle_show_hints(), hints_data_provider_get(), locals_show(), lock_broker(), match_filter(), meetme_data_provider_get(), member_add_to_queue(), pthread_timer_open(), queue_exec(), queue_function_qac(), queues_data_provider_get_helper(), sla_in_use(), try_calling(), and unload_module().
00471 { 00472 return c->elements; 00473 }
void ao2_iterator_destroy | ( | struct ao2_iterator * | i | ) |
Destroy a container iterator.
i | the iterator to destroy |
none | This function will release the container reference held by the iterator and any other resources it may be holding. |
destroy an iterator
Definition at line 833 of file astobj2.c.
References AO2_ITERATOR_MALLOCD, ao2_ref, ast_free, ao2_iterator::c, and ao2_iterator::flags.
Referenced by __ast_data_search_cmp_structure(), __ast_manager_event_multichan(), __data_result_print_cli(), __iax2_show_peers(), __queues_show(), _sip_show_peers(), action_meetmelist(), alias_show(), ast_channel_iterator_destroy(), ast_data_iterator_end(), ast_data_search_match(), ast_merge_contexts_and_delete(), ast_srtp_unprotect(), ast_var_indications(), ast_var_indications_table(), astman_verify_session_readpermissions(), astman_verify_session_writepermissions(), authenticate(), authenticate_reply(), build_dialplan_useage_map(), calendar_query_exec(), check_access(), clear_queue(), clear_stats(), cli_console_active(), cli_fax_show_sessions(), cli_list_devices(), cli_tps_report(), compare_weight(), complete_core_id(), complete_core_show_hint(), complete_country(), complete_iax2_peers(), complete_iax2_unregister(), complete_queue(), complete_queue_remove_member(), complete_sip_peer(), complete_sip_registered_peer(), complete_sip_user(), complete_sipch(), complete_userno(), conf_queue_dtmf(), data_filter_find(), data_get_xml_add_child(), data_odbc_provider_handler(), data_provider_print_cli(), data_provider_release_all(), data_result_generate_node(), data_result_manager_output(), delete_profiles(), delete_routes(), delete_users(), destroy_pvts(), dialgroup_read(), do_parking_thread(), dump_queue_members(), extension_state_cb(), fax_session_tab_complete(), find_call(), find_queue_by_name_rt(), find_session(), find_session_by_nonce(), free_members(), get_member_status(), handle_cli_iax2_show_callno_limits(), handle_cli_iax2_show_users(), handle_cli_indication_show(), handle_cli_moh_show_classes(), handle_cli_moh_show_files(), handle_cli_odbc_show(), handle_cli_status(), handle_feature_show(), handle_parkedcalls(), handle_show_calendar(), handle_show_calendars(), handle_show_hint(), handle_show_hints(), handle_show_routes(), handle_showmanconn(), handle_statechange(), hints_data_provider_get(), iax2_getpeername(), iax2_getpeertrunk(), interface_exists(), kill_duplicate_offers(), local_devicestate(), locals_show(), manager_iax2_show_peer_list(), manager_optimize_away(), manager_parking_status(), manager_queues_status(), manager_queues_summary(), meetme_menu_admin_extended(), meetme_show_cmd(), moh_rescan_files(), num_available_members(), peers_data_provider_get(), poke_all_peers(), pp_each_user_helper(), prune_peers(), prune_users(), purge_sessions(), queue_function_qac(), queue_function_qac_dep(), queue_function_queuememberlist(), queue_function_queuememberpaused(), queue_function_queuememberstatus(), queues_data_provider_get(), queues_data_provider_get_helper(), reload(), rt_handle_member_record(), set_member_paused(), set_member_penalty(), sip_poke_all_peers(), sip_prune_realtime(), sip_show_channel(), sip_show_history(), sip_show_inuse(), sip_show_tcp(), sip_show_users(), sla_calc_station_delays(), sla_change_trunk_state(), sla_queue_event_conf(), sla_show_stations(), sla_show_trunks(), stop_streams(), tps_taskprocessor_tab_complete(), try_calling(), unload_module(), update_queue(), update_realtime_members(), and users_data_provider_get().
struct ao2_iterator ao2_iterator_init | ( | struct ao2_container * | c, | |
int | flags | |||
) | [read] |
Create an iterator for a container.
c | the container | |
flags | one or more flags from ao2_iterator_flags |
the | constructed iterator |
This function will take a reference on the container being iterated.
initialize an iterator so we start from the first object
Definition at line 818 of file astobj2.c.
References ao2_ref, ao2_iterator::c, and ao2_iterator::flags.
Referenced by __ast_data_search_cmp_structure(), __ast_manager_event_multichan(), __data_result_print_cli(), __iax2_show_peers(), __queues_show(), action_meetmelist(), alias_show(), ast_channel_iterator_all_new(), ast_data_iterator_init(), ast_data_search_match(), ast_merge_contexts_and_delete(), ast_srtp_unprotect(), ast_tone_zone_iterator_init(), astman_verify_session_readpermissions(), astman_verify_session_writepermissions(), authenticate(), authenticate_reply(), build_dialplan_useage_map(), calendar_query_exec(), check_access(), clear_queue(), clear_stats(), cli_console_active(), cli_fax_show_sessions(), cli_list_devices(), cli_tps_report(), compare_weight(), complete_core_id(), complete_core_show_hint(), complete_country(), complete_iax2_peers(), complete_iax2_unregister(), complete_queue(), complete_queue_remove_member(), complete_sip_peer(), complete_sip_registered_peer(), complete_sip_user(), complete_sipch(), complete_userno(), conf_queue_dtmf(), data_filter_find(), data_get_xml_add_child(), data_odbc_provider_handler(), data_provider_print_cli(), data_provider_release_all(), data_result_generate_node(), data_result_manager_output(), delete_profiles(), delete_routes(), delete_users(), destroy_pvts(), dialgroup_read(), do_parking_thread(), dump_queue_members(), extension_state_cb(), fax_session_tab_complete(), find_queue_by_name_rt(), find_session(), find_session_by_nonce(), free_members(), get_member_status(), handle_cli_iax2_show_callno_limits(), handle_cli_iax2_show_users(), handle_cli_moh_show_classes(), handle_cli_moh_show_files(), handle_cli_odbc_show(), handle_cli_status(), handle_feature_show(), handle_parkedcalls(), handle_show_calendar(), handle_show_calendars(), handle_show_hint(), handle_show_hints(), handle_show_routes(), handle_showmanconn(), handle_statechange(), hints_data_provider_get(), iax2_getpeername(), iax2_getpeertrunk(), interface_exists(), internal_ao2_callback(), local_devicestate(), locals_show(), manager_iax2_show_peer_list(), manager_optimize_away(), manager_parking_status(), manager_queues_status(), manager_queues_summary(), meetme_menu_admin_extended(), meetme_show_cmd(), moh_rescan_files(), num_available_members(), peers_data_provider_get(), poke_all_peers(), pp_each_user_helper(), prune_peers(), prune_users(), purge_sessions(), queue_function_qac(), queue_function_qac_dep(), queue_function_queuememberlist(), queue_function_queuememberpaused(), queue_function_queuememberstatus(), queues_data_provider_get(), queues_data_provider_get_helper(), reload(), rt_handle_member_record(), set_member_paused(), set_member_penalty(), sip_poke_all_peers(), sip_prune_realtime(), sip_show_channel(), sip_show_history(), sip_show_inuse(), sip_show_tcp(), sip_show_users(), sla_calc_station_delays(), sla_change_trunk_state(), sla_queue_event_conf(), sla_show_stations(), sla_show_trunks(), stop_streams(), tps_taskprocessor_tab_complete(), try_calling(), unload_module(), update_queue(), update_realtime_members(), and users_data_provider_get().
00819 { 00820 struct ao2_iterator a = { 00821 .c = c, 00822 .flags = flags 00823 }; 00824 00825 ao2_ref(c, +1); 00826 00827 return a; 00828 }
void* ao2_object_get_lockaddr | ( | void * | obj | ) |
Return the lock address of an object.
[in] | obj | A pointer to the object we want. |
This function comes in handy mainly for debugging locking situations, where the locking trace code reports the lock address, this allows you to correlate against object address, to match objects to reported locks.
Definition at line 205 of file astobj2.c.
References INTERNAL_OBJ(), __priv_data::lock, and astobj2::priv_data.
00206 { 00207 struct astobj2 *p = INTERNAL_OBJ(obj); 00208 00209 if (p == NULL) 00210 return NULL; 00211 00212 return &p->priv_data.lock; 00213 }
ao2_callback_fn ao2_match_by_addr |
a very common callback is one that matches by address.
Definition at line 646 of file astobj2.h.
Referenced by __ao2_unlink(), __ao2_unlink_debug(), load_module(), and load_odbc_config().