all: updated FSF address in GPL text
[sip-router] / modules / db_berkeley / bdb_cmd.h
1 /*
2  * $Id$
3  *
4  * BDB Database Driver for SIP-router
5  *
6  * Copyright (C) 2008 iptelorg GmbH
7  *
8  * This file is part of SIP-router, a free SIP server.
9  *
10  * SIP-router is free software; you can redistribute it and/or modify it under the
11  * terms of the GNU General Public License as published by the Free Software
12  * Foundation; either version 2 of the License, or (at your option) any later
13  * version.
14  *
15  * SIP-router is distributed in the hope that it will be useful, but WITHOUT ANY
16  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17  * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
18  * details.
19  *
20  * You should have received a copy of the GNU General Public License along
21  * with this program; if not, write to the Free Software Foundation, Inc.,
22  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23  */
24
25 #ifndef _BDB_CMD_H_
26 #define _BDB_CMD_H_
27
28 /** \addtogroup bdb
29  * @{
30  */
31
32 /*! \file
33  * Berkeley DB : 
34  * Declaration of bdb_cmd data structure that contains BDB specific data
35  * stored in db_cmd structures and related functions.
36  *
37  * \ingroup database
38  */
39
40 #include <stdarg.h>
41 #include <sys/time.h>
42 #include <db.h>
43
44 #include "../../lib/srdb2/db_drv.h"
45 #include "../../lib/srdb2/db_cmd.h"
46 #include "../../lib/srdb2/db_res.h"
47 #include "../../str.h"
48
49 #include "bdb_con.h"
50
51 /** Extension structure of db_cmd adding BDB specific data.
52  * This data structure extends the generic data structure db_cmd in the
53  * database API with data specific to the ldap driver.
54  */
55 typedef struct _bdb_cmd {
56         db_drv_t gen;    /**< Generic part of the data structure (must be first */
57         bdb_con_t *bcon; /**< DB connection handle */
58         DB *dbp;         /**< DB structure handle */
59         DBC *dbcp;       /**< DB cursor handle */
60         int next_flag;
61         str skey;
62         int skey_size;
63 } bdb_cmd_t, *bdb_cmd_p;
64
65
66 /** Creates a new bdb_cmd data structure.
67  * This function allocates and initializes memory for a new bdb_cmd data
68  * structure. The data structure is then attached to the generic db_cmd
69  * structure in cmd parameter.
70  * @param cmd A generic db_cmd structure to which the newly created bdb_cmd
71  *            structure will be attached.
72  */
73 int bdb_cmd(db_cmd_t* cmd);
74
75
76 /** The main execution function in BDB SER driver.
77  * This is the main execution function in this driver. It is executed whenever
78  * a SER module calls db_exec and the target database of the commands is
79  * ldap.
80  * @param res A pointer to (optional) result structure if the command returns
81  *            a result.
82  * @retval 0 if executed successfully
83  * @retval A negative number if the database server failed to execute command
84  * @retval A positive number if there was an error on client side (SER)
85  */
86 int bdb_cmd_exec(db_res_t* res, db_cmd_t* cmd);
87
88
89 int bdb_cmd_first(db_res_t* res);
90
91
92 int bdb_cmd_next(db_res_t* res);
93
94 /** @} */
95
96 #endif /* _BDB_CMD_H_ */