modules: several small doxygen bug fixes
[sip-router] / modules / db_mysql / km_db_mysql.c
1 /* 
2  * $Id$ 
3  *
4  * MySQL module interface
5  *
6  * Copyright (C) 2001-2003 FhG Fokus
7  * Copyright (C) 2008 1&1 Internet AG
8  *
9  * This file is part of Kamailio, a free SIP server.
10  *
11  * Kamailio is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation; either version 2 of the License, or
14  * (at your option) any later version
15  *
16  * Kamailio is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License 
22  * along with this program; if not, write to the Free Software 
23  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
24  */
25 /*
26  * History:
27  * --------
28  *  2003-03-11  updated to the new module exports interface (andrei)
29  *  2003-03-16  flags export parameter added (janakj)
30  */
31
32 /*! \file
33  *  \brief DB_MYSQL :: Core
34  *  \ingroup db_mysql
35  *  Module: \ref db_mysql
36  */
37
38 /*! \defgroup db_mysql DB_MYSQL :: the MySQL driver for Kamailio
39  *  \brief The Kamailio database interface to the MySQL database
40  *  - http://www.mysql.org
41  *
42  */
43
44 #include "../../sr_module.h"
45 #include "../../dprint.h"
46 #include "km_dbase.h"
47 #include "km_db_mysql.h"
48
49 #include <mysql/mysql.h>
50
51 unsigned int db_mysql_timeout_interval = 2;   /* Default is 6 seconds */
52 unsigned int db_mysql_auto_reconnect = 1;     /* Default is enabled   */
53
54 /* MODULE_VERSION */
55
56 /*! \brief
57  * MySQL database module interface
58  */
59 static kam_cmd_export_t cmds[] = {
60         {"db_bind_api",         (cmd_function)db_mysql_bind_api,      0, 0, 0, 0},
61         {0, 0, 0, 0, 0, 0}
62 };
63
64 /*! \brief
65  * Exported parameters
66  */
67 static param_export_t params[] = {
68 /*      {"ping_interval",    INT_PARAM, &db_mysql_ping_interval}, */
69         {"timeout_interval", INT_PARAM, &db_mysql_timeout_interval},
70         {"auto_reconnect",   INT_PARAM, &db_mysql_auto_reconnect},
71         {0, 0, 0}
72 };
73
74 struct kam_module_exports kam_exports = {       
75         "db_mysql",
76         DEFAULT_DLFLAGS, /* dlopen flags */
77         cmds,
78         params,          /*  module parameters */
79         0,               /* exported statistics */
80         0,               /* exported MI functions */
81         0,               /* exported pseudo-variables */
82         0,               /* extra processes */
83         kam_mysql_mod_init,  /* module initialization function */
84         0,               /* response function*/
85         0,               /* destroy function */
86         0                /* per-child init function */
87 };
88
89
90 int kam_mysql_mod_init(void)
91 {
92         LM_DBG("MySQL client version is %s\n", mysql_get_client_info());
93         return db_mysql_alloc_buffer();
94 }
95
96 int db_mysql_bind_api(db_func_t *dbb)
97 {
98         if(dbb==NULL)
99                 return -1;
100
101         memset(dbb, 0, sizeof(db_func_t));
102
103         dbb->use_table        = db_mysql_use_table;
104         dbb->init             = db_mysql_init;
105         dbb->close            = db_mysql_close;
106         dbb->query            = db_mysql_query;
107         dbb->fetch_result     = db_mysql_fetch_result;
108         dbb->raw_query        = db_mysql_raw_query;
109         dbb->free_result      = db_mysql_free_result;
110         dbb->insert           = db_mysql_insert;
111         dbb->delete           = db_mysql_delete;
112         dbb->update           = db_mysql_update;
113         dbb->replace          = db_mysql_replace;
114         dbb->last_inserted_id = db_mysql_last_inserted_id;
115         dbb->insert_update    = db_mysql_insert_update;
116         dbb->insert_delayed   = db_mysql_insert_delayed;
117         dbb->affected_rows    = db_mysql_affected_rows;
118
119         return 0;
120 }