SWITCH_DECLARE(switch_status_t) switch_ivr_parse_next_event(switch_core_session_t *session);
SWITCH_DECLARE(switch_status_t) switch_ivr_parse_all_messages(switch_core_session_t *session);
SWITCH_DECLARE(switch_status_t) switch_ivr_parse_all_signal_data(switch_core_session_t *session);
+SWITCH_DECLARE(switch_status_t) switch_ivr_parse_next_signal_data(switch_core_session_t *session);
SWITCH_DECLARE(switch_status_t) switch_ivr_process_indications(switch_core_session_t *session, switch_core_session_message_t *message);
/*!
SWITCH_DECLARE(int) switch_channel_check_signal(switch_channel_t *channel, switch_bool_t in_thread_only)
{
- if (!in_thread_only || switch_core_session_in_thread(channel->session)) {
- switch_ivr_parse_all_signal_data(channel->session);
- }
-
+ (void)in_thread_only;
+ switch_ivr_parse_next_signal_data(channel->session);
return 0;
}
}
-SWITCH_DECLARE(switch_status_t) switch_ivr_parse_all_signal_data(switch_core_session_t *session)
+static switch_status_t switch_ivr_parse_signal_data(switch_core_session_t *session, switch_bool_t all)
{
void *data;
switch_core_session_message_t msg = { 0 };
switch_core_session_receive_message(session, &msg);
data = NULL;
-
+ if (!all)
+ break;
}
switch_channel_clear_flag(channel, CF_SIGNAL_DATA);
return i ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_FALSE;
}
+SWITCH_DECLARE(switch_status_t) switch_ivr_parse_all_signal_data(switch_core_session_t *session) {
+ return switch_ivr_parse_signal_data(session, SWITCH_TRUE);
+}
+
+SWITCH_DECLARE(switch_status_t) switch_ivr_parse_next_signal_data(switch_core_session_t *session) {
+ return switch_ivr_parse_signal_data(session, SWITCH_FALSE);
+}
+
SWITCH_DECLARE(switch_status_t) switch_ivr_parse_all_events(switch_core_session_t *session)
{
int x = 0;