lib/srdb1/db_pool.h
857b95ea
 /* 
  * $Id$
  *
  * Copyright (C) 2001-2005 iptel.org
bc4bf265
  * Copyright (C) 2007-2008 1&1 Internet AG
857b95ea
  *
d520eaf5
  * This file is part of Kamailio, a free SIP server.
857b95ea
  *
d520eaf5
  * Kamailio is free software; you can redistribute it and/or modify
857b95ea
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version
  *
d520eaf5
  * Kamailio is distributed in the hope that it will be useful,
857b95ea
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License 
  * along with this program; if not, write to the Free Software 
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
bc4bf265
 /**
7d14b037
  * \file lib/srdb1/db_pool.h
bc4bf265
  * \brief Functions for managing a pool of database connections.
a33b9a87
  * \ingroup db1
bc4bf265
  */
 
2d6bfb46
 #ifndef _DB1_POOL_H
 #define _DB1_POOL_H
857b95ea
 
 #include "db_id.h"
 #include "db_con.h"
 
 
bc4bf265
 /**
857b95ea
  * This is a stub that contains all attributes
  * that pool members must have, it is not really
  * used, real connection structures are created
  * by database backends. All such structures (
  * created by the backends) must have these
  * attributes.
  */
 struct pool_con {
bc4bf265
 	struct db_id* id;        /**< Connection identifier */
 	unsigned int ref;        /**< Reference count */
 	struct pool_con* next;   /**< Next element in the pool */
857b95ea
 };
 
 
bc4bf265
 /**
  * Search the pool for a connection with the identifier equal to
  * the id.
  * \param id searched id
  * \return the connection if it could be found, NULL otherwise
857b95ea
  */
bc4bf265
 struct pool_con* pool_get(const struct db_id* id);
857b95ea
 
 
bc4bf265
 /**
  * Insert a new connection into the pool.
  * \param con the inserted connection 
857b95ea
  */
 void pool_insert(struct pool_con* con);
 
 
bc4bf265
 /**
  * Release a connection from the pool, the function
857b95ea
  * would return 1 when if the connection is not
  * referenced anymore and thus can be closed and
  * deleted by the backend. The function returns
  * 0 if the connection should still be kept open
  * because some other module is still using it.
  * The function returns -1 if the connection is
  * not in the pool.
bc4bf265
  * \param con connection that should be removed
  * \return 1 if the connection can be freed, 0 if it can't be freed, -1 if not found
857b95ea
  */
 int pool_remove(struct pool_con* con);
 
 
2d6bfb46
 #endif /* _DB1_POOL_H */