Asterisk - The Open Source Telephony Project  21.4.1
Data Fields
ao2_container Struct Reference

Generic container type. More...

#include <astobj2_container_private.h>

Data Fields

ao2_callback_fncmp_fn
 
unsigned int destroying:1
 TRUE if the container is being destroyed. More...
 
int elements
 
uint32_t options
 
ao2_sort_fnsort_fn
 
const struct ao2_container_methodsv_table
 

Detailed Description

Generic container type.

This is the base container type that contains values common to all container types.

Todo:
Linking and unlinking container objects is typically expensive, as it involves a malloc()/free() of a small object which is very inefficient. To optimize this, we can allocate larger arrays of container nodes when we run out of them, and then manage our own freelist. This will be more efficient as we can do the freelist management while we hold the lock (that we need anyway).
Examples:
app_skel.c.

Definition at line 270 of file astobj2_container_private.h.

Field Documentation

ao2_callback_fn* cmp_fn

Container traversal matching function for ao2_find.

Definition at line 276 of file astobj2_container_private.h.

Referenced by __ao2_find(), hash_ao2_container_init(), and rb_ao2_container_init().

unsigned int destroying

TRUE if the container is being destroyed.

Note
The destruction traversal should override any requested search order to do the most efficient order for destruction.
There should not be any empty nodes in the container during destruction. If there are then an error needs to be issued about container node reference leaks.

Definition at line 297 of file astobj2_container_private.h.

int elements

Number of elements in the container.

Definition at line 280 of file astobj2_container_private.h.

Referenced by ao2_container_count().

uint32_t options

The container option flags

Definition at line 278 of file astobj2_container_private.h.

Referenced by hash_ao2_container_init(), and rb_ao2_container_init().

ao2_sort_fn* sort_fn

Container sort function if the container is sorted.

Definition at line 274 of file astobj2_container_private.h.

Referenced by hash_ao2_container_init(), and rb_ao2_container_init().

const struct ao2_container_methods* v_table

Container virtual method table.

Definition at line 272 of file astobj2_container_private.h.


The documentation for this struct was generated from the following file: