9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainen#ifndef LDAP_CONNECTION_POOL_H
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainen#define LDAP_CONNECTION_POOL_H
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainen
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainenstruct ldap_client;
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainenstruct ldap_client_settings;
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainen
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainenstruct ldap_connection_list {
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainen struct ldap_connection_list *prev, *next;
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainen struct ldap_connection *conn;
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainen int refcount;
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainen};
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainen
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainenstruct ldap_connection_pool *
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainenldap_connection_pool_init(unsigned int max_connections);
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainenvoid ldap_connection_pool_deinit(struct ldap_connection_pool **_pool);
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainen/* Returns TRUE if there are connections with refcount>0 */
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainenbool ldap_connection_pool_have_references(struct ldap_connection_pool *pool);
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainen
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainenint ldap_connection_pool_get(struct ldap_connection_pool *pool,
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainen struct ldap_client *client,
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainen const struct ldap_client_settings *set,
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainen struct ldap_connection_list **list_r,
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainen const char **error_r);
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainenvoid ldap_connection_pool_unref(struct ldap_connection_pool *pool,
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainen struct ldap_connection_list **list);
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainen
9e6c76cae59ece71f72e33d8fac9025ee12eaf05Timo Sirainen#endif