Asterisk - The Open Source Telephony Project
21.4.1
|
Sorcery Memory Cache Object Wizard. More...
#include "asterisk.h"
#include "asterisk/module.h"
#include "asterisk/sorcery.h"
#include "asterisk/astobj2.h"
#include "asterisk/sched.h"
#include "asterisk/test.h"
#include "asterisk/heap.h"
#include "asterisk/cli.h"
#include "asterisk/manager.h"
Go to the source code of this file.
Data Structures | |
struct | print_object_details |
Structure used to pass data for printing cached object information. More... | |
struct | sorcery_memory_cache |
Structure for storing a memory cache. More... | |
struct | sorcery_memory_cache_fields_cmp_params |
Structure used for fields comparison. More... | |
struct | sorcery_memory_cached_object |
Structure for stored a cached object. More... | |
struct | stale_cache_update_task_data |
struct | stale_update_task_data |
Macros | |
#define | CACHE_CONTAINER_BUCKET_SIZE 53 |
The default bucket size for the container of objects in the cache. | |
#define | CACHE_HEAP_INIT_HEIGHT 5 |
Height of heap for cache object heap. Allows 31 initial objects. | |
#define | CACHES_CONTAINER_BUCKET_SIZE 53 |
The bucket size for the container of caches. | |
#define | FORMAT "%-25.25s %-15u %-15u \n" |
#define | FORMAT "%-25.25s %-15.15s %-15.15s \n" |
#define | PASSTHRU_UPDATE_THREAD_ID 0x5EED1E55 |
Functions | |
static void | __init_passthru_update_id_storage (void) |
static void | __reg_module (void) |
static void | __unreg_module (void) |
static int | add_to_cache (struct sorcery_memory_cache *cache, struct sorcery_memory_cached_object *cached_object) |
static int | age_cmp (void *a, void *b) |
struct ast_module * | AST_MODULE_SELF_SYM (void) |
static int | configuration_parse_unsigned_integer (const char *value, unsigned int *result) |
static void | end_passthru_update (void) |
static int | expire_objects_from_cache (const void *data) |
static int | is_passthru_update (void) |
static int | load_module (void) |
static void | mark_all_as_stale_in_cache (struct sorcery_memory_cache *cache) |
static int | mark_object_as_stale_in_cache (struct sorcery_memory_cache *cache, const char *id) |
static void | memory_cache_full_update (const struct ast_sorcery *sorcery, const char *type, struct sorcery_memory_cache *cache) |
static void | memory_cache_populate (const struct ast_sorcery *sorcery, const char *type, struct sorcery_memory_cache *cache) |
static void | memory_cache_stale_check (const struct ast_sorcery *sorcery, struct sorcery_memory_cache *cache) |
static void | memory_cache_stale_check_object (const struct ast_sorcery *sorcery, struct sorcery_memory_cache *cache, struct sorcery_memory_cached_object *cached) |
static void | memory_cache_stale_update_full (const struct ast_sorcery *sorcery, struct sorcery_memory_cache *cache, const char *type) |
static void | memory_cache_stale_update_object (const struct ast_sorcery *sorcery, struct sorcery_memory_cache *cache, struct sorcery_memory_cached_object *cached) |
static int | object_add_to_cache_callback (void *obj, void *arg, void *data, int flags) |
static int | object_stale_callback (void *obj, void *arg, int flags) |
static void | remove_all_from_cache (struct sorcery_memory_cache *cache) |
static int | remove_from_cache (struct sorcery_memory_cache *cache, const char *id, int reschedule) |
static int | remove_oldest_from_cache (struct sorcery_memory_cache *cache) |
static int | schedule_cache_expiration (struct sorcery_memory_cache *cache) |
static void | set_passthru_update (uint32_t value) |
static int | sorcery_memory_cache_ami_expire (struct mansession *s, const struct message *m) |
static int | sorcery_memory_cache_ami_expire_object (struct mansession *s, const struct message *m) |
static int | sorcery_memory_cache_ami_populate (struct mansession *s, const struct message *m) |
static int | sorcery_memory_cache_ami_stale (struct mansession *s, const struct message *m) |
static int | sorcery_memory_cache_ami_stale_object (struct mansession *s, const struct message *m) |
static void | sorcery_memory_cache_close (void *data) |
static int | sorcery_memory_cache_cmp (void *obj, void *arg, int flags) |
static char * | sorcery_memory_cache_complete_name (const char *word, int state) |
static char * | sorcery_memory_cache_complete_object_name (const char *cache_name, const char *word, int state) |
static int | sorcery_memory_cache_create (const struct ast_sorcery *sorcery, void *data, void *object) |
static int | sorcery_memory_cache_delete (const struct ast_sorcery *sorcery, void *data, void *object) |
static void | sorcery_memory_cache_destructor (void *obj) |
static char * | sorcery_memory_cache_dump (struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) |
static char * | sorcery_memory_cache_expire (struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) |
static int | sorcery_memory_cache_fields_cmp (void *obj, void *arg, int flags) |
static int | sorcery_memory_cache_hash (const void *obj, int flags) |
static void | sorcery_memory_cache_load (void *data, const struct ast_sorcery *sorcery, const char *type) |
static void * | sorcery_memory_cache_open (const char *data) |
static char * | sorcery_memory_cache_populate (struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) |
static int | sorcery_memory_cache_print_object (void *obj, void *arg, int flags) |
static void | sorcery_memory_cache_reload (void *data, const struct ast_sorcery *sorcery, const char *type) |
static void * | sorcery_memory_cache_retrieve_fields (const struct ast_sorcery *sorcery, void *data, const char *type, const struct ast_variable *fields) |
static void * | sorcery_memory_cache_retrieve_id (const struct ast_sorcery *sorcery, void *data, const char *type, const char *id) |
static void | sorcery_memory_cache_retrieve_multiple (const struct ast_sorcery *sorcery, void *data, const char *type, struct ao2_container *objects, const struct ast_variable *fields) |
static void | sorcery_memory_cache_retrieve_prefix (const struct ast_sorcery *sorcery, void *data, const char *type, struct ao2_container *objects, const char *prefix, const size_t prefix_len) |
static void | sorcery_memory_cache_retrieve_regex (const struct ast_sorcery *sorcery, void *data, const char *type, struct ao2_container *objects, const char *regex) |
static char * | sorcery_memory_cache_show (struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) |
static char * | sorcery_memory_cache_stale (struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) |
static struct sorcery_memory_cached_object * | sorcery_memory_cached_object_alloc (const struct ast_sorcery *sorcery, const struct sorcery_memory_cache *cache, void *object) |
static int | sorcery_memory_cached_object_cmp (void *obj, void *arg, int flags) |
static void | sorcery_memory_cached_object_destructor (void *obj) |
static int | sorcery_memory_cached_object_hash (const void *obj, int flags) |
static int | stale_cache_update (const void *data) |
static struct stale_cache_update_task_data * | stale_cache_update_task_data_alloc (struct ast_sorcery *sorcery, struct sorcery_memory_cache *cache, const char *type) |
static void | stale_cache_update_task_data_destructor (void *obj) |
static int | stale_item_update (const void *data) |
static struct stale_update_task_data * | stale_update_task_data_alloc (struct ast_sorcery *sorcery, struct sorcery_memory_cache *cache, const char *type, void *object) |
static void | stale_update_task_data_destructor (void *obj) |
static void | start_passthru_update (void) |
static int | unload_module (void) |
Variables | |
static struct ast_module_info | __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER , .description = "Sorcery Memory Cache Object Wizard" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = AST_BUILDOPT_SUM, .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_REALTIME_DRIVER, } |
static const struct ast_module_info * | ast_module_info = &__mod_info |
static struct ao2_container * | caches |
Container of created caches. | |
static struct ast_cli_entry | cli_memory_cache [] |
static struct ast_sorcery_wizard | memory_cache_object_wizard |
static struct ast_threadstorage | passthru_update_id_storage = { .once = PTHREAD_ONCE_INIT , .key_init = __init_passthru_update_id_storage , .custom_init = NULL , } |
static struct ast_sched_context * | sched |
Scheduler for cache management. | |
Sorcery Memory Cache Object Wizard.
Definition in file res_sorcery_memory_cache.c.