Merge kamailio modules into sip-router master branch
[sip-router] / modules / db_flatstore / flat_con.h
1 /*
2  * $Id$
3  *
4  * Copyright (C) 2004 FhG FOKUS
5  * Copyright (C) 2008 iptelorg GmbH
6  * Written by Jan Janak <jan@iptel.org>
7  *
8  * This file is part of SER, a free SIP server.
9  *
10  * SER 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  * SER 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  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23  */
24
25 #ifndef _FLAT_CON_H
26 #define _FLAT_CON_H
27
28 /** \addtogroup flatstore
29  * @{ 
30  */
31
32 /** \file 
33  * Inmplementation of flatstore "connections".
34  */
35
36 #include "../../lib/srdb2/db_pool.h"
37 #include "../../lib/srdb2/db_con.h"
38 #include "../../lib/srdb2/db_uri.h"
39
40 #include <stdio.h>
41
42
43 /** 
44  * Per-connection flags for flatstore connections.
45  */
46 enum flat_con_flags {
47         FLAT_OPENED      = (1 << 0), /**< Handle opened successfully */
48 };
49
50
51 struct flat_file {
52         char* filename; /**< Name of file within the directory */
53         str table;      /**< Table name the file belongs to */
54         FILE* f;        /**< File handle of the file */
55 };
56
57
58 /** A structure representing flatstore virtual connections.
59  * Flatstore module is writing data to files on a local filesystem only so
60  * there is no concept of real database connections.  In flatstore module a
61  * connection is related with a directory on the filesystem and it contains
62  * file handles to files in that directory. The file handles are then used
63  * from commands to write data in them.
64  */
65 struct flat_con {
66         db_pool_entry_t gen;    /**< Generic part of the structure */
67         struct flat_file* file;
68         int n;                  /**< Size of the file array */
69         unsigned int flags;     /**< Flags */
70 };
71
72
73 /** Create a new flat_con structure.
74  * This function creates a new flat_con structure and attachs the structure to
75  * the generic db_con structure in the parameter.
76  * @param con A generic db_con structure to be extended with flatstore payload
77  * @retval 0 on success
78  * @retval A negative number on error
79  */
80 int flat_con(db_con_t* con);
81
82
83 int flat_con_connect(db_con_t* con);
84
85
86 void flat_con_disconnect(db_con_t* con);
87
88
89 int flat_open_table(int *idx, db_con_t* con, str* name);
90
91 /** @} */
92
93 #endif /* _FLAT_CON_H */