From d94e8106303709ca90c95aec49b0ad7dbd06d901 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 29 Aug 2006 15:17:06 +0000 Subject: [PATCH] add some events git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@2425 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/include/switch_types.h | 4 ++++ src/switch_channel.c | 8 +++++++- src/switch_core.c | 7 +++++++ src/switch_event.c | 2 ++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/include/switch_types.h b/src/include/switch_types.h index 86f4c02c92..906c7caf59 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -559,6 +559,8 @@ typedef enum { SWITCH_EVENT_DTMF - DTMF was sent SWITCH_EVENT_MESSAGE - A Basic Message SWITCH_EVENT_CODEC - Codec Change + SWITCH_EVENT_PROGRESS - Early Media + SWITCH_EVENT_OUTGOING - Outgoing Channel SWITCH_EVENT_ALL - All events at once @@ -573,6 +575,8 @@ typedef enum { SWITCH_EVENT_CHANNEL_EXECUTE, SWITCH_EVENT_CHANNEL_BRIDGE, SWITCH_EVENT_CHANNEL_UNBRIDGE, + SWITCH_EVENT_CHANNEL_PROGRESS, + SWITCH_EVENT_CHANNEL_OUTGOING, SWITCH_EVENT_API, SWITCH_EVENT_LOG, SWITCH_EVENT_INBOUND_CHAN, diff --git a/src/switch_channel.c b/src/switch_channel.c index 374fff3f27..e10fd69192 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -877,7 +877,7 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_pre_answer(switch_channel switch_core_session_message_t msg; char *uuid = switch_core_session_get_uuid(channel->session); switch_status_t status; - + assert(channel != NULL); if (channel->state >= CS_HANGUP) { @@ -893,8 +893,14 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_pre_answer(switch_channel status = switch_core_session_message_send(uuid, &msg); if (status == SWITCH_STATUS_SUCCESS) { + switch_event_t *event; + switch_log_printf(SWITCH_CHANNEL_ID_LOG, (char *) file, func, line, SWITCH_LOG_NOTICE, "Pre-Answer %s!\n", channel->name); switch_channel_set_flag(channel, CF_EARLY_MEDIA); + if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_PROGRESS) == SWITCH_STATUS_SUCCESS) { + switch_channel_event_set_data(channel, event); + switch_event_fire(&event); + } } return status; diff --git a/src/switch_core.c b/src/switch_core.c index 9d87821545..ed7417a01f 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -1075,6 +1075,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_outgoing_channel(switch_core if (*new_session) { switch_caller_profile_t *profile = NULL, *peer_profile = NULL, *cloned_profile = NULL; switch_channel_t *peer_channel = NULL; + switch_event_t *event; + switch_channel_t *new_channel = switch_core_session_get_channel(*new_session); if (session && channel) { profile = switch_channel_get_caller_profile(channel); @@ -1095,6 +1097,11 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_outgoing_channel(switch_core } } } + + if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_OUTGOING) == SWITCH_STATUS_SUCCESS) { + switch_channel_event_set_data(new_channel, event); + switch_event_fire(&event); + } } return status; diff --git a/src/switch_event.c b/src/switch_event.c index 40e2b829b3..6cdfedf442 100644 --- a/src/switch_event.c +++ b/src/switch_event.c @@ -99,6 +99,8 @@ static char *EVENT_NAMES[] = { "CHANNEL_EXECUTE", "CHANNEL_BRIDGE", "CHANNEL_UNBRIDGE", + "CHANNEL_PROGRESS", + "CHANNEL_OUTGOING", "API", "LOG", "INBOUND_CHAN",