pjproject: Add cache_pools debugging option.
[asterisk/asterisk.git] / include / asterisk / res_pjproject.h
1 /*
2  * Asterisk -- An open source telephony toolkit.
3  *
4  * Copyright (C) 2016, Fairview 5 Engineering, LLC
5  *
6  * George Joseph <george.joseph@fairview5.com>
7  *
8  * See http://www.asterisk.org for more information about
9  * the Asterisk project. Please do not directly contact
10  * any of the maintainers of this project for assistance;
11  * the project provides a web site, mailing lists and IRC
12  * channels for your use.
13  *
14  * This program is free software, distributed under the terms of
15  * the GNU General Public License Version 2. See the LICENSE file
16  * at the top of the source tree.
17  */
18
19 #ifndef _RES_PJPROJECT_H
20 #define _RES_PJPROJECT_H
21
22 #include <pj/types.h>
23 #include <pj/pool.h>
24
25 /*!
26  * \brief Retrieve a pjproject build option
27  *
28  * \param option The build option requested
29  * \param format_string A scanf-style format string to parse the option value into
30  * \param ... Pointers to variables to receive the values parsed
31  *
32  * \retval The number of values parsed
33  *
34  * \since 13.8.0
35  *
36  * \note The option requested must be from those returned by pj_dump_config()
37  * which can be displayed with the 'pjsip show buildopts' CLI command.
38  *
39  *   <b>Sample Usage:</b>
40  *   \code
41  *
42  *   int max_hostname;
43  *
44  *   ast_sip_get_pjproject_buildopt("PJ_MAX_HOSTNAME", "%d", &max_hostname);
45  *
46  *   \endcode
47  *
48  */
49 int ast_pjproject_get_buildopt(char *option, char *format_string, ...) __attribute__((format(scanf, 2, 3)));
50
51 /*!
52  * \brief Begin PJPROJECT log interception for CLI output.
53  * \since 13.8.0
54  *
55  * \param fd CLI file descriptior to send intercepted output.
56  *
57  * \note ast_pjproject_log_intercept_begin() and
58  * ast_pjproject_log_intercept_end() must always be called
59  * in pairs.
60  *
61  * \return Nothing
62  */
63 void ast_pjproject_log_intercept_begin(int fd);
64
65 /*!
66  * \brief End PJPROJECT log interception for CLI output.
67  * \since 13.8.0
68  *
69  * \note ast_pjproject_log_intercept_begin() and
70  * ast_pjproject_log_intercept_end() must always be called
71  * in pairs.
72  *
73  * \return Nothing
74  */
75 void ast_pjproject_log_intercept_end(void);
76
77 /*!
78  * \brief Initialize the caching pool factory.
79  * \since 13.21.0
80  *
81  * \param cp Caching pool factory to initialize
82  * \param policy Pool factory policy
83  * \param max_capacity Total capacity to be retained in the cache.  Zero disables caching.
84  *
85  * \return Nothing
86  */
87 void ast_pjproject_caching_pool_init(pj_caching_pool *cp,
88         const pj_pool_factory_policy *policy, pj_size_t max_capacity);
89
90 /*!
91  * \brief Destroy caching pool factory and all cached pools.
92  * \since 13.21.0
93  *
94  * \param cp Caching pool factory to destroy
95  *
96  * \return Nothing
97  */
98 void ast_pjproject_caching_pool_destroy(pj_caching_pool *cp);
99
100 #endif /* _RES_PJPROJECT_H */