[Freeswitch-svn] [commit] r7800 - in freeswitch/trunk/src: . include
Freeswitch SVN
anthm at freeswitch.org
Wed Mar 5 22:11:21 EST 2008
Author: anthm
Date: Wed Mar 5 22:11:20 2008
New Revision: 7800
Modified:
freeswitch/trunk/src/include/switch_core.h
freeswitch/trunk/src/include/switch_core_event_hook.h
freeswitch/trunk/src/include/switch_module_interfaces.h
freeswitch/trunk/src/switch_core_event_hook.c
freeswitch/trunk/src/switch_core_session.c
Log:
update
Modified: freeswitch/trunk/src/include/switch_core.h
==============================================================================
--- freeswitch/trunk/src/include/switch_core.h (original)
+++ freeswitch/trunk/src/include/switch_core.h Wed Mar 5 22:11:20 2008
@@ -728,6 +728,11 @@
_Inout_ switch_memory_pool_t **pool,
_In_ switch_originate_flag_t flags);
+SWITCH_DECLARE(switch_call_cause_t) switch_core_session_resurrect_channel(_In_z_ const char *endpoint_name,
+ _Inout_ switch_core_session_t **new_session,
+ _Inout_ switch_memory_pool_t **pool,
+ _In_ void *data);
+
/*!
\brief Receive a message on a given session
\param session the session to receive the message from
Modified: freeswitch/trunk/src/include/switch_core_event_hook.h
==============================================================================
--- freeswitch/trunk/src/include/switch_core_event_hook.h (original)
+++ freeswitch/trunk/src/include/switch_core_event_hook.h Wed Mar 5 22:11:20 2008
@@ -48,6 +48,7 @@
typedef struct switch_io_event_hook_send_dtmf switch_io_event_hook_send_dtmf_t;
typedef struct switch_io_event_hook_recv_dtmf switch_io_event_hook_recv_dtmf_t;
typedef struct switch_io_event_hook_state_change switch_io_event_hook_state_change_t;
+typedef struct switch_io_event_hook_resurrect_session switch_io_event_hook_resurrect_session_t;
typedef switch_status_t (*switch_outgoing_channel_hook_t)
(switch_core_session_t *, switch_caller_profile_t *, switch_core_session_t *, switch_originate_flag_t);
typedef switch_status_t (*switch_receive_message_hook_t) (switch_core_session_t *, switch_core_session_message_t *);
@@ -62,7 +63,7 @@
typedef switch_status_t (*switch_send_dtmf_hook_t) (switch_core_session_t *, const switch_dtmf_t *);
typedef switch_status_t (*switch_recv_dtmf_hook_t) (switch_core_session_t *, const switch_dtmf_t *);
typedef switch_status_t (*switch_state_change_hook_t) (switch_core_session_t *);
-
+typedef switch_call_cause_t (*switch_resurrect_session_hook_t)(switch_core_session_t **, switch_memory_pool_t **, void *);
/*! \brief Node in which to store custom receive message callback hooks */
struct switch_io_event_hook_outgoing_channel {
@@ -154,6 +155,12 @@
struct switch_io_event_hook_state_change *next;
};
+
+struct switch_io_event_hook_resurrect_session {
+ switch_resurrect_session_hook_t resurrect_session;
+ struct switch_io_event_hook_resurrect_session *next;
+};
+
/*! \brief A table of lists of io_event_hooks to store the event hooks associated with a session */
struct switch_io_event_hooks {
/*! a list of outgoing channel hooks */
@@ -182,6 +189,7 @@
switch_io_event_hook_recv_dtmf_t *recv_dtmf;
/*! a list of state change hooks */
switch_io_event_hook_state_change_t *state_change;
+ switch_io_event_hook_resurrect_session_t *resurrect_session;
};
extern switch_io_event_hooks_t switch_core_session_get_event_hooks(switch_core_session_t *session);
@@ -240,6 +248,7 @@
NEW_HOOK_DECL_ADD_P(waitfor_write);
NEW_HOOK_DECL_ADD_P(send_dtmf);
NEW_HOOK_DECL_ADD_P(recv_dtmf);
+NEW_HOOK_DECL_ADD_P(resurrect_session);
NEW_HOOK_DECL_REM_P(outgoing_channel);
NEW_HOOK_DECL_REM_P(receive_message);
@@ -254,6 +263,7 @@
NEW_HOOK_DECL_REM_P(waitfor_write);
NEW_HOOK_DECL_REM_P(send_dtmf);
NEW_HOOK_DECL_REM_P(recv_dtmf);
+NEW_HOOK_DECL_REM_P(resurrect_session);
///\}
SWITCH_END_EXTERN_C
Modified: freeswitch/trunk/src/include/switch_module_interfaces.h
==============================================================================
--- freeswitch/trunk/src/include/switch_module_interfaces.h (original)
+++ freeswitch/trunk/src/include/switch_module_interfaces.h Wed Mar 5 22:11:20 2008
@@ -98,6 +98,7 @@
struct switch_io_event_hooks;
+
typedef switch_call_cause_t (*switch_io_outgoing_channel_t)
(switch_core_session_t *, switch_caller_profile_t *, switch_core_session_t **, switch_memory_pool_t **, switch_originate_flag_t);
typedef switch_status_t (*switch_io_read_frame_t) (switch_core_session_t *, switch_frame_t **, int, switch_io_flag_t, int);
@@ -111,6 +112,7 @@
typedef switch_status_t (*switch_io_state_change_t) (switch_core_session_t *);
typedef switch_status_t (*switch_io_read_video_frame_t) (switch_core_session_t *, switch_frame_t **, int, switch_io_flag_t, int);
typedef switch_status_t (*switch_io_write_video_frame_t) (switch_core_session_t *, switch_frame_t *, int, switch_io_flag_t, int);
+typedef switch_call_cause_t (*switch_io_resurrect_session_t)(switch_core_session_t **, switch_memory_pool_t **, void *);
typedef enum {
SWITCH_IO_OUTGOING_CHANNEL,
@@ -124,7 +126,8 @@
SWITCH_IO_RECEIVE_EVENT,
SWITCH_IO_STATE_CHANGE,
SWITCH_IO_READ_VIDEO_FRAME,
- SWITCH_IO_WRITE_VIDEO_FRAME
+ SWITCH_IO_WRITE_VIDEO_FRAME,
+ SWITCH_IO_RESURRECT_SESSION
} switch_io_routine_name_t;
/*! \brief A table of i/o routines that an endpoint interface can implement */
@@ -153,6 +156,8 @@
switch_io_read_video_frame_t read_video_frame;
/*! write a video frame to a session */
switch_io_write_video_frame_t write_video_frame;
+ /*! resurrect a session */
+ switch_io_resurrect_session_t resurrect_session;
void *padding[10];
};
Modified: freeswitch/trunk/src/switch_core_event_hook.c
==============================================================================
--- freeswitch/trunk/src/switch_core_event_hook.c (original)
+++ freeswitch/trunk/src/switch_core_event_hook.c Wed Mar 5 22:11:20 2008
@@ -44,6 +44,7 @@
NEW_HOOK_DECL(waitfor_write)
NEW_HOOK_DECL(send_dtmf)
NEW_HOOK_DECL(recv_dtmf)
+NEW_HOOK_DECL(resurrect_session)
/* For Emacs:
* Local Variables:
Modified: freeswitch/trunk/src/switch_core_session.c
==============================================================================
--- freeswitch/trunk/src/switch_core_session.c (original)
+++ freeswitch/trunk/src/switch_core_session.c Wed Mar 5 22:11:20 2008
@@ -173,6 +173,21 @@
return session->stream_count;
}
+SWITCH_DECLARE(switch_call_cause_t) switch_core_session_resurrect_channel(const char *endpoint_name,
+ switch_core_session_t **new_session,
+ switch_memory_pool_t **pool,
+ void *data)
+{
+ const switch_endpoint_interface_t *endpoint_interface;
+
+ if ((endpoint_interface = switch_loadable_module_get_endpoint_interface(endpoint_name)) == 0) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not locate channel type %s\n", endpoint_name);
+ return SWITCH_CAUSE_CHAN_NOT_IMPLEMENTED;
+ }
+
+ return endpoint_interface->io_routines->resurrect_session(new_session, pool, data);
+}
+
SWITCH_DECLARE(switch_call_cause_t) switch_core_session_outgoing_channel(switch_core_session_t *session,
const char *endpoint_name,
switch_caller_profile_t *caller_profile,
More information about the Freeswitch-svn
mailing list