Files
asterisk/res/res_pjsip/include/res_pjsip_private.h
George Joseph a94c8562fd sorcery: Create sorcery instance registry.
In order to retrieve an arbitrary sorcery instance from a dialplan function
(or any place else) there needs to be a registry of sorcery instances.

ast_sorcery_init now creates a hashtab as a registry.

ast_sorcery_open now checks the hashtab for an existing sorcery instance
matching the caller's module name.  If it finds one, it bumps the 
refcount and returns it.  If not, it creates a new sorcery instance,
adds it to the hashtab, then returns it.

ast_sorcery_retrieve_by_module_name is a new function that does a hashtab 
lookup by module name.  It can be called by the future dialplan function.

res_pjsip/config_system needed a small change to share the main res_pjsip 
sorcery instance.

tests/test_sorcery was updated to include a test for the registry.

(closes issue ASTERISK-22537)
Review: http://reviewboard.asterisk.org/r/3184/
........

Merged revisions 408518 from http://svn.asterisk.org/svn/asterisk/branches/12


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@408519 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-02-20 20:45:30 +00:00

111 lines
2.3 KiB
C

/*
* res_pjsip.h
*
* Created on: Jan 25, 2013
* Author: mjordan
*/
#ifndef RES_PJSIP_PRIVATE_H_
#define RES_PJSIP_PRIVATE_H_
#include "asterisk/module.h"
#include "asterisk/compat.h"
struct ao2_container;
struct ast_threadpool_options;
/*!
* \brief Initialize the configuration for res_pjsip
*/
int ast_res_pjsip_initialize_configuration(const struct ast_module_info *ast_module_info);
/*!
* \brief Annihilate the configuration objects
*/
void ast_res_pjsip_destroy_configuration(void);
/*!
* \brief Reload the configuration
*/
int ast_res_pjsip_reload_configuration(void);
/*!
* \brief Initialize OPTIONS request handling.
*
* XXX This currently includes qualifying peers. It shouldn't.
* That should go into a registrar. When that occurs, we won't
* need the reload stuff.
*
* \param reload Reload options handling
*
* \retval 0 on success
* \retval other on failure
*/
int ast_res_pjsip_init_options_handling(int reload);
/*!
* \brief Initialize transport storage for contacts.
*
* \retval 0 on success
* \retval other on failure
*/
int ast_res_pjsip_init_contact_transports(void);
/*!
* \brief Initialize outbound authentication support
*
* \retval 0 Success
* \retval non-zero Failure
*/
int ast_sip_initialize_outbound_authentication(void);
/*!
* \brief Initialize system configuration
*
* \retval 0 Success
* \retval non-zero Failure
*/
int ast_sip_initialize_system(void);
/*!
* \brief Destroy system configuration
*/
void ast_sip_destroy_system(void);
/*!
* \brief Initialize global configuration
*
* \retval 0 Success
* \retval non-zero Failure
*/
int ast_sip_initialize_global(void);
/*!
* \brief Clean up res_pjsip options handling
*/
void ast_res_pjsip_cleanup_options_handling(void);
/*!
* \brief Get threadpool options
*/
void sip_get_threadpool_options(struct ast_threadpool_options *threadpool_options);
/*!
* \brief Retrieve the name of the default outbound endpoint.
*
* \note This returns a memory allocated copy of the name that
* needs to be freed by the caller.
*
* \retval The name of the default outbound endpoint.
* \retval NULL if configuration not found.
*/
char *ast_sip_global_default_outbound_endpoint(void);
/*!
* \brief Functions for initializing and destroying the CLI.
*/
int ast_sip_initialize_cli(void);
void ast_sip_destroy_cli(void);
#endif /* RES_PJSIP_PRIVATE_H_ */