#include <string.h>
#include "asterisk/lock.h"
#include "asterisk/compiler.h"
Go to the source code of this file.
Defines | |
#define | __ASTOBJ_HASH(type, hashes) type *next[1] |
#define | ASTOBJ_COMPONENTS(type) |
Add ASTOBJ components to a struct (with locking support). | |
#define | ASTOBJ_COMPONENTS_FULL(type, namelen, hashes) |
Add ASTOBJ components to a struct (with locking support). | |
#define | ASTOBJ_COMPONENTS_NOLOCK(type) ASTOBJ_COMPONENTS_NOLOCK_FULL(type,ASTOBJ_DEFAULT_NAMELEN,1) |
Add ASTOBJ components to a struct (without locking support). | |
#define | ASTOBJ_COMPONENTS_NOLOCK_FULL(type, namelen, hashes) |
Add ASTOBJ components to a struct (without locking support). | |
#define | ASTOBJ_CONTAINER_COMPONENTS(type) |
Create a container for ASTOBJs (with locking support). | |
#define | ASTOBJ_CONTAINER_COMPONENTS_NOLOCK(type) ASTOBJ_CONTAINER_COMPONENTS_NOLOCK_FULL(type,1,ASTOBJ_DEFAULT_BUCKETS) |
Create a container for ASTOBJs (without locking support). | |
#define | ASTOBJ_CONTAINER_COMPONENTS_NOLOCK_FULL(type, hashes, buckets) type *head |
Create a container for ASTOBJs (without locking support). | |
#define | ASTOBJ_CONTAINER_DESTROY(container) ASTOBJ_CONTAINER_DESTROY_FULL(container,1,ASTOBJ_DEFAULT_BUCKETS) |
Destroy a container. | |
#define | ASTOBJ_CONTAINER_DESTROY_FULL(container, hashes, buckets) |
Destroy a container. | |
#define | ASTOBJ_CONTAINER_DESTROYALL(container, destructor) |
Empty a container. | |
#define | ASTOBJ_CONTAINER_DUMP(fd, s, slen, container) ASTOBJ_CONTAINER_TRAVERSE(container, 1, do { ASTOBJ_DUMP(s,slen,iterator); ast_cli(fd, "%s", s); } while(0)) |
Dump information about all the objects in a container to a file descriptor. | |
#define | ASTOBJ_CONTAINER_FIND(container, namestr) |
Find an object in a container. | |
#define | ASTOBJ_CONTAINER_FIND_FULL(container, data, field, hashfunc, hashoffset, comparefunc) |
Find an object in a container. | |
#define | ASTOBJ_CONTAINER_FIND_UNLINK(container, namestr) |
Find and remove an object from a container. | |
#define | ASTOBJ_CONTAINER_FIND_UNLINK_FULL(container, data, field, hashfunc, hashoffset, comparefunc) |
Find and remove an object in a container. | |
#define | ASTOBJ_CONTAINER_INIT(container) ASTOBJ_CONTAINER_INIT_FULL(container,1,ASTOBJ_DEFAULT_BUCKETS) |
Initialize a container. | |
#define | ASTOBJ_CONTAINER_INIT_FULL(container, hashes, buckets) |
Initialize a container. | |
#define | ASTOBJ_CONTAINER_LINK(container, newobj) ASTOBJ_CONTAINER_LINK_FULL(container,newobj,(newobj)->name,name,ASTOBJ_DEFAULT_HASH,0,strcasecmp) |
Add an object to a container. | |
#define | ASTOBJ_CONTAINER_LINK_END(container, newobj) |
Add an object to the end of a container. | |
#define | ASTOBJ_CONTAINER_LINK_FULL(container, newobj, data, field, hashfunc, hashoffset, comparefunc) |
Add an object to a container. | |
#define | ASTOBJ_CONTAINER_LINK_START(container, newobj) |
Add an object to the front of a container. | |
#define | ASTOBJ_CONTAINER_MARKALL(container) ASTOBJ_CONTAINER_TRAVERSE(container, 1, ASTOBJ_MARK(iterator)) |
Mark all the objects in a container. | |
#define | ASTOBJ_CONTAINER_PRUNE_MARKED(container, destructor) |
Prune marked objects from a container. | |
#define | ASTOBJ_CONTAINER_RDLOCK(container) ast_mutex_lock(&(container)->_lock) |
Lock an ASTOBJ_CONTAINER for reading. | |
#define | ASTOBJ_CONTAINER_TRAVERSE(container, continue, eval) |
Iterate through the objects in a container. | |
#define | ASTOBJ_CONTAINER_UNLINK(container, obj) |
Remove an object from a container. | |
#define | ASTOBJ_CONTAINER_UNLINK_START(container) |
Remove an object from the front of a container. | |
#define | ASTOBJ_CONTAINER_UNLOCK(container) ast_mutex_unlock(&(container)->_lock) |
Unlock an ASTOBJ_CONTAINER. | |
#define | ASTOBJ_CONTAINER_UNMARKALL(container) ASTOBJ_CONTAINER_TRAVERSE(container, 1, ASTOBJ_UNMARK(iterator)) |
Unmark all the objects in a container. | |
#define | ASTOBJ_CONTAINER_WRLOCK(container) ast_mutex_lock(&(container)->_lock) |
Lock an ASTOBJ_CONTAINER for writing. | |
#define | ASTOBJ_DEFAULT_BUCKETS 256 |
#define | ASTOBJ_DEFAULT_HASH ast_strhash |
#define | ASTOBJ_DEFAULT_NAMELEN 80 |
#define | ASTOBJ_DUMP(s, slen, obj) snprintf((s),(slen),"name: %s\nobjflags: %d\nrefcount: %d\n\n", (obj)->name, (obj)->objflags, (obj)->refcount); |
Dump information about an object into a string. | |
#define | ASTOBJ_FLAG_MARKED (1 << 0) |
#define | ASTOBJ_INIT(object) |
Initialize an object. | |
#define | ASTOBJ_MARK(object) |
Mark an ASTOBJ by adding the ASTOBJ_FLAG_MARKED flag to its objflags mask. | |
#define | ASTOBJ_RDLOCK(object) ast_mutex_lock(&(object)->_lock) |
Lock an ASTOBJ for reading. | |
#define | ASTOBJ_REF(object) |
Increment an object reference count. | |
#define | ASTOBJ_TRYWRLOCK(object) ast_mutex_trylock(&(object)->_lock) |
#define | ASTOBJ_UNLOCK(object) ast_mutex_unlock(&(object)->_lock) |
Unlock a locked object. | |
#define | ASTOBJ_UNMARK(object) |
Unmark an ASTOBJ by subtracting the ASTOBJ_FLAG_MARKED flag from its objflags mask. | |
#define | ASTOBJ_UNREF(object, destructor) |
Decrement the reference count on an object. | |
#define | ASTOBJ_WRLOCK(object) ast_mutex_lock(&(object)->_lock) |
Lock an ASTOBJ for writing. |
These macros expect to operate on two different object types, ASTOBJs and ASTOBJ_CONTAINERs. These are not actual types, as any struct can be converted into an ASTOBJ compatible object or container using the supplied macros.
Sample Usage:
struct sample_object { ASTOBJ_COMPONENTS(struct sample_object); }; struct sample_container { ASTOBJ_CONTAINER_COMPONENTS(struct sample_object); } super_container; void sample_object_destroy(struct sample_object *obj) { free(obj); } int init_stuff() { struct sample_object *obj1; struct sample_object *found_obj; obj1 = malloc(sizeof(struct sample_object)); ASTOBJ_CONTAINER_INIT(&super_container); ASTOBJ_INIT(obj1); ASTOBJ_WRLOCK(obj1); ast_copy_string(obj1->name, "obj1", sizeof(obj1->name)); ASTOBJ_UNLOCK(obj1); ASTOBJ_CONTAINER_LINK(&super_container, obj1); found_obj = ASTOBJ_CONTAINER_FIND(&super_container, "obj1"); if(found_obj) { printf("Found object: %s", found_obj->name); ASTOBJ_UNREF(found_obj,sample_object_destroy); } ASTOBJ_CONTAINER_DESTROYALL(&super_container,sample_object_destroy); ASTOBJ_CONTAINER_DESTROY(&super_container); return 0; }
Definition in file astobj.h.
#define ASTOBJ_COMPONENTS | ( | type | ) |
Value:
ASTOBJ_COMPONENTS_NOLOCK(type); \ ast_mutex_t _lock;
type | The datatype of the object. |
Sample Usage:
struct sample_struct { ASTOBJ_COMPONENTS(struct sample_struct); };
#define ASTOBJ_COMPONENTS_FULL | ( | type, | |||
namelen, | |||||
hashes | ) |
Value:
ASTOBJ_COMPONENTS_NOLOCK_FULL(type,namelen,hashes); \ ast_mutex_t _lock;
type | The datatype of the object. | |
namelen | The length to make the name char array. | |
hashes | The number of containers the object can be present in. |
Sample Usage:
struct sample_struct { ASTOBJ_COMPONENTS_FULL(struct sample_struct,1,1); };
#define ASTOBJ_COMPONENTS_NOLOCK | ( | type | ) | ASTOBJ_COMPONENTS_NOLOCK_FULL(type,ASTOBJ_DEFAULT_NAMELEN,1) |
Add ASTOBJ components to a struct (without locking support).
type | The datatype of the object. |
Sample Usage:
struct sample_struct_componets { ASTOBJ_COMPONENTS_NOLOCK(struct sample_struct); };
#define ASTOBJ_COMPONENTS_NOLOCK_FULL | ( | type, | |||
namelen, | |||||
hashes | ) |
Value:
char name[namelen]; \ unsigned int refcount; \ unsigned int objflags; \ __ASTOBJ_HASH(type,hashes)
type | The datatype of the object. | |
namelen | The length to make the name char array. | |
hashes | The number of containers the object can be present in. |
Sample Usage:
struct sample_struct { ASTOBJ_COMPONENTS_NOLOCK_FULL(struct sample_struct,1,1); };
#define ASTOBJ_CONTAINER_COMPONENTS | ( | type | ) |
Value:
Create a container for ASTOBJs (with locking support).
type | The type of objects the container will hold. |
Sample Usage:
struct sample_struct_container { ASTOBJ_CONTAINER_COMPONENTS(struct sample_struct); };
#define ASTOBJ_CONTAINER_COMPONENTS_NOLOCK | ( | type | ) | ASTOBJ_CONTAINER_COMPONENTS_NOLOCK_FULL(type,1,ASTOBJ_DEFAULT_BUCKETS) |
Create a container for ASTOBJs (without locking support).
type | The type of objects the container will hold. |
Sample Usage:
struct sample_struct_nolock_container { ASTOBJ_CONTAINER_COMPONENTS_NOLOCK(struct sample_struct); };
Create a container for ASTOBJs (without locking support).
type | The type of objects the container will hold. | |
hashes | Currently unused. | |
buckets | Currently unused. |
Sample Usage:
struct sample_struct_nolock_container { ASTOBJ_CONTAINER_COMPONENTS_NOLOCK_FULL(struct sample_struct,1,1); };
#define ASTOBJ_CONTAINER_DESTROY | ( | container | ) | ASTOBJ_CONTAINER_DESTROY_FULL(container,1,ASTOBJ_DEFAULT_BUCKETS) |
Destroy a container.
container | A pointer to the container to destory. |
Definition at line 768 of file astobj.h.
Referenced by aji_client_destroy(), ast_netsock_release(), ast_smdi_interface_destroy(), load_module(), and unload_module().
#define ASTOBJ_CONTAINER_DESTROY_FULL | ( | container, | |||
hashes, | |||||
buckets | ) |
Value:
do { \ ast_mutex_destroy(&(container)->_lock); \ } while(0)
container | A pointer to the container to destroy. | |
hashes | Currently unused. | |
buckets | Currently unused. |
#define ASTOBJ_CONTAINER_DESTROYALL | ( | container, | |||
destructor | ) |
Empty a container.
container | A pointer to the container to operate on. | |
destructor | A destructor function to call on each object. |
Definition at line 456 of file astobj.h.
Referenced by aji_client_destroy(), ast_netsock_release(), ast_smdi_interface_destroy(), load_module(), and unload_module().
#define ASTOBJ_CONTAINER_DUMP | ( | fd, | |||
s, | |||||
slen, | |||||
container | ) | ASTOBJ_CONTAINER_TRAVERSE(container, 1, do { ASTOBJ_DUMP(s,slen,iterator); ast_cli(fd, "%s", s); } while(0)) |
Dump information about all the objects in a container to a file descriptor.
fd | The file descriptor to write to. | |
s | A string buffer, same as ASTOBJ_DUMP(). | |
slen | The length of s, same as ASTOBJ_DUMP(). | |
container | A pointer to the container to dump. |
Definition at line 817 of file astobj.h.
Referenced by sip_show_objects().
#define ASTOBJ_CONTAINER_FIND | ( | container, | |||
namestr | ) |
Find an object in a container.
container | A pointer to the container to search. | |
namestr | The name to search for. |
Definition at line 404 of file astobj.h.
Referenced by aji_client_info_handler(), aji_create_buddy(), aji_create_client(), aji_dinfo_handler(), aji_handle_presence(), aji_handle_subscribe(), aji_register_query_handler(), aji_status_exec(), aji_test(), ast_aji_get_client(), ast_smdi_interface_find(), find_alias(), find_gtalk(), find_peer(), find_user(), gtalk_alloc(), gtalk_create_member(), and sip_poke_peer_s().
#define ASTOBJ_CONTAINER_FIND_FULL | ( | container, | |||
data, | |||||
field, | |||||
hashfunc, | |||||
hashoffset, | |||||
comparefunc | ) |
Find an object in a container.
container | A pointer to the container to search. | |
data | The data to search for. | |
field | The field/member of the container's objects to search. | |
hashfunc | The hash function to use, currently not implemented. | |
hashoffset | The hash offset to use, currently not implemented. | |
comparefunc | The function used to compare the field and data values. |
Definition at line 431 of file astobj.h.
Referenced by find_gtalk(), find_peer(), and find_user().
#define ASTOBJ_CONTAINER_FIND_UNLINK | ( | container, | |||
namestr | ) |
Find and remove an object from a container.
container | A pointer to the container to operate on. | |
namestr | The name of the object to remove. |
#define ASTOBJ_CONTAINER_FIND_UNLINK_FULL | ( | container, | |||
data, | |||||
field, | |||||
hashfunc, | |||||
hashoffset, | |||||
comparefunc | ) |
Find and remove an object in a container.
container | A pointer to the container to search. | |
data | The data to search for. | |
field | The field/member of the container's objects to search. | |
hashfunc | The hash function to use, currently not implemented. | |
hashoffset | The hash offset to use, currently not implemented. | |
comparefunc | The function used to compare the field and data values. |
Definition at line 554 of file astobj.h.
Referenced by build_alias(), build_peer(), and build_user().
#define ASTOBJ_CONTAINER_INIT | ( | container | ) | ASTOBJ_CONTAINER_INIT_FULL(container,1,ASTOBJ_DEFAULT_BUCKETS) |
Initialize a container.
container | A pointer to the container to initialize. |
Sample Usage:
struct sample_struct_container { ASTOBJ_CONTAINER_COMPONENTS(struct sample_struct); } container; int func() { ASTOBJ_CONTAINER_INIT(&container); }
Definition at line 755 of file astobj.h.
Referenced by aji_create_client(), alloc_smdi_interface(), ast_netsock_init(), and load_module().
#define ASTOBJ_CONTAINER_INIT_FULL | ( | container, | |||
hashes, | |||||
buckets | ) |
Value:
do { \ ast_mutex_init(&(container)->_lock); \ } while(0)
container | A pointer to the container to initialize. | |
hashes | Currently unused. | |
buckets | Currently unused. |
Sample Usage:
struct sample_struct_container { ASTOBJ_CONTAINER_COMPONENTS_FULL(struct sample_struct,1,1); } container; int func() { ASTOBJ_CONTAINER_INIT_FULL(&container,1,1); }
#define ASTOBJ_CONTAINER_LINK | ( | container, | |||
newobj | ) | ASTOBJ_CONTAINER_LINK_FULL(container,newobj,(newobj)->name,name,ASTOBJ_DEFAULT_HASH,0,strcasecmp) |
Add an object to a container.
container | A pointer to the container to operate on. | |
newobj | A pointer to the object to be added. |
Definition at line 779 of file astobj.h.
Referenced by aji_create_buddy(), aji_create_client(), ast_netsock_bindaddr(), register_verify(), reload_config(), and sip_register().
#define ASTOBJ_CONTAINER_LINK_END | ( | container, | |||
newobj | ) |
Add an object to the end of a container.
container | A pointer to the container to operate on. | |
newobj | A pointer to the object to be added. |
Definition at line 583 of file astobj.h.
Referenced by ast_smdi_md_message_push(), and ast_smdi_mwi_message_push().
#define ASTOBJ_CONTAINER_LINK_FULL | ( | container, | |||
newobj, | |||||
data, | |||||
field, | |||||
hashfunc, | |||||
hashoffset, | |||||
comparefunc | ) |
Add an object to a container.
container | A pointer to the container to operate on. | |
newobj | A pointer to the object to be added. | |
data | Currently unused. | |
field | Currently unused. | |
hashfunc | Currently unused. | |
hashoffset | Currently unused. | |
comparefunc | Currently unused. |
#define ASTOBJ_CONTAINER_LINK_START | ( | container, | |||
newobj | ) |
Add an object to the front of a container.
container | A pointer to the container to operate on. | |
newobj | A pointer to the object to be added. |
Definition at line 613 of file astobj.h.
Referenced by ast_smdi_md_message_putback(), and ast_smdi_mwi_message_putback().
#define ASTOBJ_CONTAINER_MARKALL | ( | container | ) | ASTOBJ_CONTAINER_TRAVERSE(container, 1, ASTOBJ_MARK(iterator)) |
Mark all the objects in a container.
container | A pointer to the container to operate on. |
Definition at line 785 of file astobj.h.
Referenced by aji_create_client(), aji_reload(), and smdi_load().
#define ASTOBJ_CONTAINER_PRUNE_MARKED | ( | container, | |||
destructor | ) |
Prune marked objects from a container.
container | A pointer to the container to prune. | |
destructor | A destructor function to call on each marked object. |
Definition at line 654 of file astobj.h.
Referenced by aji_reload(), delete_aliases(), delete_users(), prune_peers(), and sip_prune_realtime().
#define ASTOBJ_CONTAINER_RDLOCK | ( | container | ) | ast_mutex_lock(&(container)->_lock) |
#define ASTOBJ_CONTAINER_TRAVERSE | ( | container, | |||
continue, | |||||
eval | ) |
Iterate through the objects in a container.
container | A pointer to the container to traverse. | |
continue | A condition to allow the traversal to continue. | |
eval | A statement to evaluate in the iteration loop. |
eval
statement. See the sample code for an example.Sample Usage:
ASTOBJ_CONTAINER_TRAVERSE(&sample_container,1, { ASTOBJ_RDLOCK(iterator); printf("Currently iterating over '%s'\n", iterator->name); ASTOBJ_UNLOCK(iterator); } );
ASTOBJ_CONTAINER_TRAVERSE(&sample_container,1, sample_func(iterator));
Definition at line 379 of file astobj.h.
Referenced by _sip_show_peers(), aji_do_debug(), aji_filter_roster(), aji_no_debug(), aji_pruneregister(), aji_reload(), aji_show_clients(), aji_test(), ast_aji_get_client(), ast_netsock_find(), complete_sip_peer(), complete_sip_user(), delete_aliases(), delete_users(), do_monitor(), find_gtalk(), gtalk_show_channels(), reload_config(), sip_do_reload(), sip_poke_all_peers(), sip_prune_realtime(), sip_send_all_registers(), sip_show_inuse(), sip_show_registry(), sip_show_users(), smdi_msg_find(), and unload_module().
#define ASTOBJ_CONTAINER_UNLINK | ( | container, | |||
obj | ) |
Remove an object from a container.
container | A pointer to the container to operate on. | |
obj | A pointer to the object to remove. |
Definition at line 481 of file astobj.h.
Referenced by expire_register().
#define ASTOBJ_CONTAINER_UNLINK_START | ( | container | ) |
Remove an object from the front of a container.
container | A pointer to the container to operate on. |
Definition at line 633 of file astobj.h.
Referenced by unlink_from_msg_q().
#define ASTOBJ_CONTAINER_UNLOCK | ( | container | ) | ast_mutex_unlock(&(container)->_lock) |
Unlock an ASTOBJ_CONTAINER.
Definition at line 286 of file astobj.h.
Referenced by delete_aliases(), delete_users(), and sip_prune_realtime().
#define ASTOBJ_CONTAINER_UNMARKALL | ( | container | ) | ASTOBJ_CONTAINER_TRAVERSE(container, 1, ASTOBJ_UNMARK(iterator)) |
#define ASTOBJ_CONTAINER_WRLOCK | ( | container | ) | ast_mutex_lock(&(container)->_lock) |
Lock an ASTOBJ_CONTAINER for writing.
Definition at line 283 of file astobj.h.
Referenced by delete_aliases(), delete_users(), and sip_prune_realtime().
#define ASTOBJ_DUMP | ( | s, | |||
slen, | |||||
obj | ) | snprintf((s),(slen),"name: %s\nobjflags: %d\nrefcount: %d\n\n", (obj)->name, (obj)->objflags, (obj)->refcount); |
Dump information about an object into a string.
s | A pointer to the string buffer to use. | |
slen | The length of s. | |
obj | A pointer to the object to dump. |
#define ASTOBJ_FLAG_MARKED (1 << 0) |
#define ASTOBJ_INIT | ( | object | ) |
Value:
do { \ ast_mutex_init(&(object)->_lock); \ object->name[0] = '\0'; \ object->refcount = 1; \ } while(0)
object | A pointer to the object to operate on. |
Definition at line 267 of file astobj.h.
Referenced by aji_create_buddy(), aji_create_client(), alloc_smdi_interface(), ast_netsock_bindaddr(), build_alias(), build_peer(), build_user(), sip_register(), smdi_read(), and temp_peer().
#define ASTOBJ_MARK | ( | object | ) |
Value:
do { \ ASTOBJ_WRLOCK(object); \ (object)->objflags |= ASTOBJ_FLAG_MARKED; \ ASTOBJ_UNLOCK(object); \ } while(0)
object | A pointer to the object to operate on. |
Definition at line 244 of file astobj.h.
Referenced by delete_aliases(), delete_users(), and sip_prune_realtime().
#define ASTOBJ_RDLOCK | ( | object | ) | ast_mutex_lock(&(object)->_lock) |
Lock an ASTOBJ for reading.
Definition at line 103 of file astobj.h.
Referenced by _sip_show_peers(), aji_do_debug(), aji_filter_roster(), aji_no_debug(), aji_pruneregister(), aji_reload(), aji_show_clients(), aji_test(), ast_netsock_find(), delete_aliases(), delete_users(), find_gtalk(), reload_config(), sip_do_reload(), sip_prune_realtime(), sip_show_inuse(), sip_show_registry(), sip_show_users(), and unload_module().
#define ASTOBJ_REF | ( | object | ) |
Increment an object reference count.
object | A pointer to the object to operate on. |
Definition at line 204 of file astobj.h.
Referenced by aji_act_hook(), aji_client_connect(), aji_client_info_handler(), aji_dinfo_handler(), aji_ditems_handler(), aji_filter_roster(), aji_log_hook(), aji_recv_loop(), aji_register_approve_handler(), aji_register_query_handler(), append_mailbox_mapping(), build_peer(), check_user_full(), do_monitor(), gtalk_parser(), handle_request_subscribe(), handle_response_peerpoke(), parse_register_contact(), reg_source_db(), sip_poke_all_peers(), sip_poke_peer(), sip_reg_timeout(), sip_reregister(), smdi_msg_find(), smdi_msg_retrieve_read(), and transmit_register().
#define ASTOBJ_TRYWRLOCK | ( | object | ) | ast_mutex_trylock(&(object)->_lock) |
#define ASTOBJ_UNLOCK | ( | object | ) | ast_mutex_unlock(&(object)->_lock) |
Unlock a locked object.
Definition at line 112 of file astobj.h.
Referenced by _sip_show_peers(), aji_create_buddy(), aji_create_client(), aji_do_debug(), aji_filter_roster(), aji_handle_presence(), aji_no_debug(), aji_pruneregister(), aji_reload(), aji_show_clients(), aji_test(), ast_netsock_find(), delete_aliases(), delete_users(), do_monitor(), find_gtalk(), gtalk_request(), gtalk_show_channels(), handle_request_subscribe(), reload_config(), sip_poke_all_peers(), sip_prune_realtime(), sip_send_all_registers(), sip_show_inuse(), sip_show_registry(), sip_show_users(), smdi_toggle_mwi(), and unload_module().
#define ASTOBJ_UNMARK | ( | object | ) |
Value:
do { \ ASTOBJ_WRLOCK(object); \ (object)->objflags &= ~ASTOBJ_FLAG_MARKED; \ ASTOBJ_UNLOCK(object); \ } while(0)
object | A pointer to the object to operate on. |
Definition at line 254 of file astobj.h.
Referenced by aji_create_buddy(), aji_create_client(), build_alias(), build_peer(), and build_user().
#define ASTOBJ_UNREF | ( | object, | |||
destructor | ) |
Decrement the reference count on an object.
object | A pointer the object to operate on. | |
destructor | The destructor to call if the object is no longer referenced. It will be passed the pointer as an argument. |
Definition at line 221 of file astobj.h.
Referenced by __sip_destroy(), _sip_show_peer(), aji_act_hook(), aji_client_connect(), aji_client_info_handler(), aji_create_buddy(), aji_create_client(), aji_dinfo_handler(), aji_ditems_handler(), aji_handle_presence(), aji_log_hook(), aji_recv_loop(), aji_register_approve_handler(), aji_register_query_handler(), ast_aji_disconnect(), ast_netsock_unref(), ast_smdi_interface_unref(), build_peer(), build_user(), check_user_full(), create_addr(), destroy_mailbox_mapping(), do_monitor(), expire_register(), function_sippeer(), gtalk_parser(), gtalk_request(), handle_request_subscribe(), handle_response_peerpoke(), handle_response_register(), parse_register_contact(), reg_source_db(), register_verify(), reload_config(), run_externnotify(), setup_incoming_call(), sip_devicestate(), sip_do_debug_peer(), sip_do_reload(), sip_poke_all_peers(), sip_poke_noanswer(), sip_poke_peer(), sip_poke_peer_s(), sip_reg_timeout(), sip_register(), sip_reregister(), sip_show_user(), smdi_msg_datastore_destroy(), smdi_msg_retrieve_read(), smdi_read(), unref_msg(), and update_call_counter().
#define ASTOBJ_WRLOCK | ( | object | ) | ast_mutex_lock(&(object)->_lock) |
Lock an ASTOBJ for writing.
Definition at line 107 of file astobj.h.
Referenced by aji_create_buddy(), aji_create_client(), aji_handle_presence(), do_monitor(), gtalk_request(), gtalk_show_channels(), handle_request_subscribe(), sip_poke_all_peers(), sip_send_all_registers(), smdi_toggle_mwi(), and unload_module().