[asterisk-bugs] [JIRA] (ASTERISK-22107) Bridge API Enhancements - refactor and redesign ast_bridge_featuresremove interval hooks from ast_bridge_features

Matt Jordan (JIRA) noreply at issues.asterisk.org
Thu Jul 18 18:34:03 CDT 2013


     [ https://issues.asterisk.org/jira/browse/ASTERISK-22107?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Matt Jordan updated ASTERISK-22107:
-----------------------------------

                 Component/s: Core/Bridging
    Target Release Version/s: 12
    
> Bridge API Enhancements - refactor and redesign ast_bridge_featuresremove interval hooks from ast_bridge_features
> -----------------------------------------------------------------------------------------------------------------
>
>                 Key: ASTERISK-22107
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-22107
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Core/Bridging
>            Reporter: Matt Jordan
>      Target Release: 12
>
>
> This is sub-optimal:
> {noformat}
> /*!
>  * \brief Structure that contains features information
>  */
> struct ast_bridge_features {
> 	/*! Attached DTMF feature hooks */
> 	struct ao2_container *dtmf_hooks;
> 	/*! Attached hangup interception hooks container */
> 	struct ao2_container *hangup_hooks;
> 	/*! Attached bridge channel join interception hooks container */
> 	struct ao2_container *join_hooks;
> 	/*! Attached bridge channel leave interception hooks container */
> 	struct ao2_container *leave_hooks;
> 	/*! Attached interval hooks */
> 	struct ast_heap *interval_hooks;
> 	/*! Used to determine when interval based features should be checked */
> 	struct ast_timer *interval_timer;
> 	/*! Limits feature data */
> 	struct ast_bridge_features_limits *limits;
> 	/*! Callback to indicate when a bridge channel has started and stopped talking */
> 	ast_bridge_talking_indicate_callback talker_cb;
> 	/*! Callback to destroy any pvt data stored for the talker. */
> 	ast_bridge_talking_indicate_destructor talker_destructor_cb;
> 	/*! Talker callback pvt data */
> 	void *talker_pvt_data;
> 	/*! Feature flags that are enabled */
> 	struct ast_flags feature_flags;
> 	/*! Used to assign the sequence number to the next interval hook added. */
> 	unsigned int interval_sequence;
> 	/*! TRUE if feature_flags is setup */
> 	unsigned int usable:1;
> 	/*! TRUE if the channel/bridge is muted. */
> 	unsigned int mute:1;
> 	/*! TRUE if DTMF should be passed into the bridge tech.  */
> 	unsigned int dtmf_passthrough:1;
> };
> {noformat}
> While {{ast_bridge_features}} should be the structure that holds a channel's features while it is in a bridge, there are better ways of structuring this data.
> # It should structure specific information. Talk detection and other optional function callbacks should at least be put in a sub-structure.
> # It should not have a different container for each type of feature. We will extend the types of features that are possible in a bridge - we should not break the ABI every time we do so. While this may mean having a few different containers, {{ao2_containers}} support selection of specific types of objects through {{ao2_callback}}. Given that these containers will not support many hooks, this should not be a major performance hit.
> # {{ast_bridge_feature_limits}} is currently leaked in certain situations. If the lifetime of the limits object is not explicitly tied to the lifetime of the features object, it should be an ao2 object.
> In general, the goal should be to have a features API that is flexible enough to allow for new feature hooks to be developed without being changed.
> While the design of ConfBridge does currently limit this in certain ways, we should attempt to make this as robust as possible.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.asterisk.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira



More information about the asterisk-bugs mailing list