9e4070bebd08bdbc78cf3ad1ea98d3da1c445e3b
[asterisk/asterisk.git] / include / asterisk / res_odbc.h
1 /*
2  * Asterisk -- An open source telephony toolkit.
3  *
4  * Copyright (C) 1999 - 2005, Digium, Inc.
5  * Copyright (C) 2004 - 2005, Anthony Minessale II
6  *
7  * Mark Spencer <markster@digium.com>
8  * Anthony Minessale <anthmct@yahoo.com>
9  *
10  * See http://www.asterisk.org for more information about
11  * the Asterisk project. Please do not directly contact
12  * any of the maintainers of this project for assistance;
13  * the project provides a web site, mailing lists and IRC
14  * channels for your use.
15  *
16  * This program is free software, distributed under the terms of
17  * the GNU General Public License Version 2. See the LICENSE file
18  * at the top of the source tree.
19  */
20
21 /*! \file
22  * \brief ODBC resource manager
23  */
24
25 #ifndef _ASTERISK_RES_ODBC_H
26 #define _ASTERISK_RES_ODBC_H
27
28 #include <sql.h>
29 #include <sqlext.h>
30 #include <sqltypes.h>
31
32 typedef struct odbc_obj odbc_obj;
33
34 typedef enum { ODBC_SUCCESS=0,ODBC_FAIL=-1} odbc_status;
35
36 struct odbc_obj {
37         char *name;
38         char *dsn;
39         char *username;
40         char *password;
41         SQLHENV  env;                   /* ODBC Environment */
42         SQLHDBC  con;                   /* ODBC Connection Handle */
43         SQLHSTMT stmt;                  /* ODBC Statement Handle */
44         ast_mutex_t lock;
45         int up;
46
47 };
48
49 /* functions */
50 odbc_obj *new_odbc_obj(char *name,char *dsn,char *username, char *password);
51 odbc_status odbc_obj_connect(odbc_obj *obj);
52 odbc_status odbc_obj_disconnect(odbc_obj *obj);
53 void destroy_odbc_obj(odbc_obj **obj);
54 int register_odbc_obj(char *name,odbc_obj *obj);
55 odbc_obj *fetch_odbc_obj(const char *name, int check);
56 int odbc_dump_fd(int fd,odbc_obj *obj);
57 int odbc_sanity_check(odbc_obj *obj);
58 SQLHSTMT odbc_prepare_and_execute(odbc_obj *obj, SQLHSTMT (*prepare_cb)(odbc_obj *obj, void *data), void *data);
59 int odbc_smart_execute(odbc_obj *obj, SQLHSTMT stmt);
60 int odbc_smart_direct_execute(odbc_obj *obj, SQLHSTMT stmt, char *sql);
61
62 #endif /* _ASTERISK_RES_ODBC_H */