|
Asterisk - The Open Source Telephony Project GIT-master-9647a4f
|
Common, private definitions for astobj2 containers. More...
#include "asterisk/astobj2.h"

Go to the source code of this file.
Data Structures | |
| struct | ao2_container |
| Generic container type. More... | |
| struct | ao2_container_methods |
| struct | ao2_container_node |
| Generic container node. More... | |
Macros | |
| #define | __container_unlink_node(node, flags) __container_unlink_node_debug(node, flags, NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__) |
| #define | AO2_TRAVERSAL_STATE_SIZE 100 |
Typedefs | |
| typedef struct ao2_container *(* | ao2_container_alloc_empty_clone_fn) (struct ao2_container *self, const char *tag, const char *file, int line, const char *func) |
| Create an empty copy of this container. | |
| typedef void(* | ao2_container_destroy_fn) (struct ao2_container *self) |
| Destroy this container. | |
| typedef void(* | ao2_container_display) (struct ao2_container *self, void *where, ao2_prnt_fn *prnt, ao2_prnt_obj_fn *prnt_obj) |
| Display contents of the specified container. | |
| typedef void(* | ao2_container_find_cleanup_fn) (void *v_state) |
| Cleanup the container traversal state. | |
| typedef struct ao2_container_node *(* | ao2_container_find_first_fn) (struct ao2_container *self, enum search_flags flags, void *arg, void *v_state) |
| Find the first container node in a traversal. | |
| typedef struct ao2_container_node *(* | ao2_container_find_next_fn) (struct ao2_container *self, void *v_state, struct ao2_container_node *prev) |
| Find the next container node in a traversal. | |
| typedef enum ao2_container_insert(* | ao2_container_insert_fn) (struct ao2_container *self, struct ao2_container_node *node) |
| Insert a node into this container. | |
| typedef int(* | ao2_container_integrity) (struct ao2_container *self) |
| Perform an integrity check on the specified container. | |
| typedef struct ao2_container_node *(* | ao2_container_new_node_fn) (struct ao2_container *self, void *obj_new, const char *tag, const char *file, int line, const char *func) |
| Create a new container node. | |
| typedef void(* | ao2_container_statistics) (struct ao2_container *self, void *where, ao2_prnt_fn *prnt) |
| Display statistics of the specified container. | |
| typedef struct ao2_container_node *(* | ao2_iterator_next_fn) (struct ao2_container *self, struct ao2_container_node *prev, enum ao2_iterator_flags flags) |
| Find the next non-empty iteration node in the container. | |
| typedef void(* | ao2_link_node_stat_fn) (struct ao2_container *container, struct ao2_container_node *node) |
| typedef void(* | ao2_unlink_node_stat_fn) (struct ao2_container *container, struct ao2_container_node *node) |
Enumerations | |
| enum | ao2_callback_type { AO2_CALLBACK_DEFAULT , AO2_CALLBACK_WITH_DATA } |
| enum | ao2_container_insert { AO2_CONTAINER_INSERT_NODE_INSERTED , AO2_CONTAINER_INSERT_NODE_OBJ_REPLACED , AO2_CONTAINER_INSERT_NODE_REJECTED } |
| enum | ao2_unlink_node_flags { AO2_UNLINK_NODE_UNLINK_OBJECT = (1 << 0) , AO2_UNLINK_NODE_NOUNREF_OBJECT = (1 << 1) , AO2_UNLINK_NODE_UNREF_NODE = (1 << 2) , AO2_UNLINK_NODE_DEC_COUNT = (1 << 3) } |
Functions | |
| int | __container_unlink_node_debug (struct ao2_container_node *node, uint32_t flags, const char *tag, const char *file, int line, const char *func) |
| void | container_destruct (void *_c) |
| int | container_init (void) |
Common, private definitions for astobj2 containers.
Definition in file astobj2_container_private.h.
| #define __container_unlink_node | ( | node, | |
| flags | |||
| ) | __container_unlink_node_debug(node, flags, NULL, __FILE__, __LINE__, __PRETTY_FUNCTION__) |
Definition at line 310 of file astobj2_container_private.h.
| #define AO2_TRAVERSAL_STATE_SIZE 100 |
Allow enough room for container specific traversal state structs
Definition at line 60 of file astobj2_container_private.h.
| typedef struct ao2_container *(* ao2_container_alloc_empty_clone_fn) (struct ao2_container *self, const char *tag, const char *file, int line, const char *func) |
Create an empty copy of this container.
| self | Container to operate upon. |
| tag | used for debugging. |
| file | Debug file name invoked from |
| line | Debug line invoked from |
| func | Debug function name invoked from |
| NULL | on error. |
Definition at line 82 of file astobj2_container_private.h.
| typedef void(* ao2_container_destroy_fn) (struct ao2_container *self) |
Destroy this container.
| self | Container to operate upon. |
Definition at line 82 of file astobj2_container_private.h.
| typedef void(* ao2_container_display) (struct ao2_container *self, void *where, ao2_prnt_fn *prnt, ao2_prnt_obj_fn *prnt_obj) |
Display contents of the specified container.
| self | Container to dump. |
| where | User data needed by prnt to determine where to put output. |
| prnt | Print output callback function to use. |
| prnt_obj | Callback function to print the given object's key. (NULL if not available) |
Definition at line 179 of file astobj2_container_private.h.
| typedef void(* ao2_container_find_cleanup_fn) (void *v_state) |
Cleanup the container traversal state.
| v_state | Traversal state to cleanup. |
Definition at line 154 of file astobj2_container_private.h.
| typedef struct ao2_container_node *(* ao2_container_find_first_fn) (struct ao2_container *self, enum search_flags flags, void *arg, void *v_state) |
Find the first container node in a traversal.
| self | Container to operate upon. |
| flags | search_flags to control traversing the container |
| arg | Comparison callback arg parameter. |
| v_state | Traversal state to restart container traversal. |
| NULL | when no node found. |
Definition at line 82 of file astobj2_container_private.h.
| typedef struct ao2_container_node *(* ao2_container_find_next_fn) (struct ao2_container *self, void *v_state, struct ao2_container_node *prev) |
Find the next container node in a traversal.
| self | Container to operate upon. |
| v_state | Traversal state to restart container traversal. |
| prev | Previous node returned by the traversal search functions. The ref ownership is passed back to this function. |
| NULL | when no node found. |
Definition at line 82 of file astobj2_container_private.h.
| typedef enum ao2_container_insert(* ao2_container_insert_fn) (struct ao2_container *self, struct ao2_container_node *node) |
Insert a node into this container.
| self | Container to operate upon. |
| node | Container node to insert into the container. |
Definition at line 82 of file astobj2_container_private.h.
| typedef int(* ao2_container_integrity) (struct ao2_container *self) |
Perform an integrity check on the specified container.
| self | Container to check integrity. |
| 0 | on success. |
| -1 | on error. |
Definition at line 202 of file astobj2_container_private.h.
| typedef struct ao2_container_node *(* ao2_container_new_node_fn) (struct ao2_container *self, void *obj_new, const char *tag, const char *file, int line, const char *func) |
Create a new container node.
| self | Container to operate upon. |
| obj_new | Object to put into the node. |
| tag | used for debugging. |
| file | Debug file name invoked from |
| line | Debug line invoked from |
| func | Debug function name invoked from |
| NULL | on error. |
Definition at line 82 of file astobj2_container_private.h.
| typedef void(* ao2_container_statistics) (struct ao2_container *self, void *where, ao2_prnt_fn *prnt) |
Display statistics of the specified container.
| self | Container to display statistics. |
| where | User data needed by prnt to determine where to put output. |
| prnt | Print output callback function to use. |
Definition at line 190 of file astobj2_container_private.h.
| typedef struct ao2_container_node *(* ao2_iterator_next_fn) (struct ao2_container *self, struct ao2_container_node *prev, enum ao2_iterator_flags flags) |
Find the next non-empty iteration node in the container.
| self | Container to operate upon. |
| prev | Previous node returned by the iterator. |
| flags | search_flags to control iterating the container. Only AO2_ITERATOR_DESCENDING is useful by the method. |
| NULL | on error or no more nodes in the container. |
Definition at line 154 of file astobj2_container_private.h.
| typedef void(* ao2_link_node_stat_fn) (struct ao2_container *container, struct ao2_container_node *node) |
Definition at line 212 of file astobj2_container_private.h.
| typedef void(* ao2_unlink_node_stat_fn) (struct ao2_container *container, struct ao2_container_node *node) |
Definition at line 222 of file astobj2_container_private.h.
| enum ao2_callback_type |
| Enumerator | |
|---|---|
| AO2_CALLBACK_DEFAULT | |
| AO2_CALLBACK_WITH_DATA | |
Definition at line 45 of file astobj2_container_private.h.
| enum ao2_container_insert |
Definition at line 50 of file astobj2_container_private.h.
Definition at line 33 of file astobj2_container_private.h.
| int __container_unlink_node_debug | ( | struct ao2_container_node * | node, |
| uint32_t | flags, | ||
| const char * | tag, | ||
| const char * | file, | ||
| int | line, | ||
| const char * | func | ||
| ) |
Definition at line 39 of file astobj2_container.c.
References __ao2_ref(), ao2_ref, AO2_UNLINK_NODE_DEC_COUNT, AO2_UNLINK_NODE_NOUNREF_OBJECT, AO2_UNLINK_NODE_UNLINK_OBJECT, AO2_UNLINK_NODE_UNREF_NODE, ast_atomic_fetchadd_int(), container, ao2_container::elements, NULL, and ao2_container::v_table.
Referenced by __ao2_iterator_next(), and internal_ao2_traverse().
| void container_destruct | ( | void * | _c | ) |
Definition at line 635 of file astobj2_container.c.
References ao2_t_callback, ast_atomic_fetchadd_int(), c, NULL, OBJ_MULTIPLE, OBJ_NODATA, and OBJ_UNLINK.
Referenced by __ao2_container_alloc_hash(), and __ao2_container_alloc_rbtree().
| int container_init | ( | void | ) |
Definition at line 1181 of file astobj2_container.c.
References AO2_ALLOC_OPT_LOCK_RWLOCK, AO2_CONTAINER_ALLOC_OPT_DUPS_REPLACE, ao2_t_container_alloc_list, ARRAY_LEN, ast_cli_register_multiple, ast_register_cleanup(), and NULL.
Referenced by astobj2_init().