modules/ims_qos: added patch for flow-description bug when request originates from...
[sip-router] / src / lib / srdb1 / db_pool.h
1 /* 
2  * Copyright (C) 2001-2005 iptel.org
3  * Copyright (C) 2007-2008 1&1 Internet AG
4  *
5  * This file is part of Kamailio, a free SIP server.
6  *
7  * Kamailio is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version
11  *
12  * Kamailio is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License 
18  * along with this program; if not, write to the Free Software 
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
20  */
21
22 /**
23  * \file lib/srdb1/db_pool.h
24  * \brief Functions for managing a pool of database connections.
25  * \ingroup db1
26  */
27
28 #ifndef _DB1_POOL_H
29 #define _DB1_POOL_H
30
31 #include "db_id.h"
32 #include "db_con.h"
33
34
35 /**
36  * This is a stub that contains all attributes
37  * that pool members must have, it is not really
38  * used, real connection structures are created
39  * by database backends. All such structures (
40  * created by the backends) must have these
41  * attributes.
42  */
43 struct pool_con {
44         struct db_id* id;        /**< Connection identifier */
45         unsigned int ref;        /**< Reference count */
46         struct pool_con* next;   /**< Next element in the pool */
47 };
48
49
50 /**
51  * Search the pool for a connection with the identifier equal to
52  * the id.
53  * \param id searched id
54  * \return the connection if it could be found, NULL otherwise
55  */
56 struct pool_con* pool_get(const struct db_id* id);
57
58
59 /**
60  * Insert a new connection into the pool.
61  * \param con the inserted connection 
62  */
63 void pool_insert(struct pool_con* con);
64
65
66 /**
67  * Release a connection from the pool, the function
68  * would return 1 when if the connection is not
69  * referenced anymore and thus can be closed and
70  * deleted by the backend. The function returns
71  * 0 if the connection should still be kept open
72  * because some other module is still using it.
73  * The function returns -1 if the connection is
74  * not in the pool.
75  * \param con connection that should be removed
76  * \return 1 if the connection can be freed, 0 if it can't be freed, -1 if not found
77  */
78 int pool_remove(struct pool_con* con);
79
80
81 #endif /* _DB1_POOL_H */