Asterisk - The Open Source Telephony Project GIT-master-80b953f
Loading...
Searching...
No Matches
cdr_sqlite3_custom.c
Go to the documentation of this file.
1/*
2 * Asterisk -- An open source telephony toolkit.
3 *
4 * Copyright (C) 1999 - 2007, Digium, Inc.
5 *
6 * Mark Spencer <markster@digium.com> and others.
7 *
8 * See http://www.asterisk.org for more information about
9 * the Asterisk project. Please do not directly contact
10 * any of the maintainers of this project for assistance;
11 * the project provides a web site, mailing lists and IRC
12 * channels for your use.
13 *
14 * This program is free software, distributed under the terms of
15 * the GNU General Public License Version 2. See the LICENSE file
16 * at the top of the source tree.
17 */
18
19/*!
20 * \file
21 * \brief Custom SQLite3 CDR records.
22 *
23 * \author Adapted by Alejandro Rios <alejandro.rios@avatar.com.co> and
24 * Russell Bryant <russell@digium.com> from
25 * cdr_mysql_custom by Edward Eastman <ed@dm3.co.uk>,
26 * and cdr_sqlite by Holger Schurig <hs4233@mail.mn-solutions.de>
27 *
28 * \arg See also \ref AstCDR
29 *
30 * \ingroup cdr_drivers
31 *
32 * The logic for this module now resides in res/res_cdrel_custom.c.
33 *
34 */
35
36/*** MODULEINFO
37 <depend>res_cdrel_custom</depend>
38 <depend>sqlite3</depend>
39 <support_level>extended</support_level>
40 ***/
41
42#include "asterisk.h"
43
44#include <sqlite3.h>
45
46#include "asterisk/cdr.h"
47#include "asterisk/module.h"
49
50#define CONFIG "cdr_sqlite3_custom.conf"
51
52#define CUSTOM_BACKEND_NAME "CDR sqlite3 custom backend"
53
54static struct cdrel_configs *configs;
55
56/*!
57 * Protects in-flight log transactions from reloads.
58 */
60
61#define CDREL_RECORD_TYPE cdrel_record_cdr
62#define CDREL_BACKEND_TYPE cdrel_backend_db
63
64static int custom_log(struct ast_cdr *cdr)
65{
66 int res = 0;
67
69 res = cdrel_logger(configs, cdr);
71
72 return res;
73}
74
75static int unload_module(void)
76{
77 int res = 0;
78
82 if (res == 0) {
84 }
85
86 return res;
87}
88
99
100static int reload(void)
101{
102 int res = 0;
106 return res;
107}
108
109AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "SQLite3 Custom CDR Module",
110 .support_level = AST_MODULE_SUPPORT_EXTENDED,
111 .load = load_module,
112 .unload = unload_module,
113 .reload = reload,
114 .load_pri = AST_MODPRI_CDR_DRIVER,
115 .requires = "cdr,res_cdrel_custom",
Asterisk main include file. File version handling, generic pbx functions.
Call Detail Record API.
#define CDREL_RECORD_TYPE
static struct cdrel_configs * configs
#define CONFIG
static enum ast_module_load_result load_module(void)
static int custom_log(struct ast_cdr *cdr)
#define CDREL_BACKEND_TYPE
static ast_rwlock_t configs_lock
static int unload_module(void)
static int reload(void)
#define CUSTOM_BACKEND_NAME
#define ast_rwlock_wrlock(a)
Definition lock.h:243
#define ast_rwlock_rdlock(a)
Definition lock.h:242
#define ast_rwlock_init(rwlock)
wrapper for rwlock with tracking enabled
Definition lock.h:231
#define ast_rwlock_destroy(rwlock)
Definition lock.h:240
#define ast_rwlock_unlock(a)
Definition lock.h:241
Asterisk module definitions.
@ AST_MODFLAG_LOAD_ORDER
Definition module.h:331
#define AST_MODULE_INFO(keystr, flags_to_set, desc, fields...)
Definition module.h:557
@ AST_MODPRI_CDR_DRIVER
Definition module.h:345
@ AST_MODULE_SUPPORT_EXTENDED
Definition module.h:122
#define ASTERISK_GPL_KEY
The text the key() function should return.
Definition module.h:46
ast_module_load_result
Definition module.h:68
@ AST_MODULE_LOAD_SUCCESS
Definition module.h:70
@ AST_MODULE_LOAD_DECLINE
Module has failed to load, may be in an inconsistent state.
Definition module.h:78
Protected header for the CDR and CEL Custom Backends.
int cdrel_logger(struct cdrel_configs *configs, void *data)
Log a record. The module's logging_cb must call this.
Definition loggers.c:270
int cdrel_reload_module(enum cdrel_backend_type backend_type, enum cdrel_record_type record_type, struct cdrel_configs **configs, const char *config_filename)
Perform module reload.
int cdrel_unload_module(enum cdrel_backend_type backend_type, enum cdrel_record_type record_type, struct cdrel_configs *configs, const char *backend_name)
Perform module unload.
struct cdrel_configs * cdrel_load_module(enum cdrel_backend_type backend_type, enum cdrel_record_type record_type, const char *config_filename, const char *backend_name, void *logging_cb)
Perform initial module load.
Responsible for call detail data.
Definition cdr.h:281
Structure for rwlock and tracking information.
Definition lock.h:164