[Freeswitch-svn] [commit] r8998 - in freeswitch/trunk: . build src src/include src/mod/languages/mod_java src/mod/languages/mod_java/src/org/freeswitch/swig src/mod/languages/mod_lua src/mod/languages/mod_perl src/mod/languages/mod_python
Freeswitch SVN
anthm at freeswitch.org
Fri Jul 11 15:42:53 EDT 2008
Author: anthm
Date: Fri Jul 11 15:42:52 2008
New Revision: 8998
Added:
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/DTMF.java
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_uint32_t.java
freeswitch/trunk/src/mod/languages/mod_python/hack.diff
freeswitch/trunk/src/mod/languages/mod_python/mod_python_extra.c
freeswitch/trunk/src/mod/languages/mod_python/mod_python_extra.h
Removed:
freeswitch/trunk/src/mod/languages/mod_python/switch_swig_wrap.c
freeswitch/trunk/src/mod/languages/mod_python/switch_swig_wrap.c.bkp
Modified:
freeswitch/trunk/Makefile.am
freeswitch/trunk/build/swigall.sh
freeswitch/trunk/src/include/switch_cpp.h
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java
freeswitch/trunk/src/mod/languages/mod_java/switch_swig_wrap.cpp
freeswitch/trunk/src/mod/languages/mod_lua/mod_lua_wrap.cpp
freeswitch/trunk/src/mod/languages/mod_perl/freeswitch.pm
freeswitch/trunk/src/mod/languages/mod_perl/mod_perl_wrap.cpp
freeswitch/trunk/src/mod/languages/mod_python/Makefile.in
freeswitch/trunk/src/mod/languages/mod_python/freeswitch.py
freeswitch/trunk/src/mod/languages/mod_python/freeswitch_python.cpp
freeswitch/trunk/src/mod/languages/mod_python/freeswitch_python.h
freeswitch/trunk/src/mod/languages/mod_python/mod_python.c
freeswitch/trunk/src/mod/languages/mod_python/mod_python.i
freeswitch/trunk/src/mod/languages/mod_python/mod_python_wrap.cpp
freeswitch/trunk/src/switch_cpp.cpp
Log:
snake charming
Modified: freeswitch/trunk/Makefile.am
==============================================================================
--- freeswitch/trunk/Makefile.am (original)
+++ freeswitch/trunk/Makefile.am Fri Jul 11 15:42:52 2008
@@ -331,7 +331,7 @@
cd libs/openzap && autoconf
cd libs/openzap && ./configure
-update-clean: clean modwipe uninstall libs/openzap/Makefile
+update-clean: clean modwipe uninstall libs/openzap/Makefile python-reconf
cd libs/sofia-sip && $(MAKE) clean
cd libs/openzap && $(MAKE) clean
cd libs/portaudio && $(MAKE) clean
@@ -347,6 +347,10 @@
cd libs/sofia-sip && $(MAKE) -j
$(MAKE) -j modules
+python-reconf:
+ rm -f src/mod/languages/mod_python/Makefile
+ ./config.status
+
pa-reconf:
cd libs/portaudio && $(MAKE) clean
cd libs/portaudio && sh ./configure.gnu
Modified: freeswitch/trunk/build/swigall.sh
==============================================================================
--- freeswitch/trunk/build/swigall.sh (original)
+++ freeswitch/trunk/build/swigall.sh Fri Jul 11 15:42:52 2008
@@ -9,7 +9,8 @@
cd ../../../..
cd src/mod/languages/mod_python
-make reswig
+make swigclean
+make mod_python_wrap.cpp
cd ../../../..
cd src/mod/languages/mod_java
Modified: freeswitch/trunk/src/include/switch_cpp.h
==============================================================================
--- freeswitch/trunk/src/include/switch_cpp.h (original)
+++ freeswitch/trunk/src/include/switch_cpp.h Fri Jul 11 15:42:52 2008
@@ -101,6 +101,14 @@
S_RDLOCK = (1 << 2)
} session_flag_t;
+ class DTMF {
+ public:
+ char digit;
+ uint32_t duration;
+ SWITCH_DECLARE_CONSTRUCTOR DTMF(char idigit, uint32_t iduration = SWITCH_DEFAULT_DTMF_DURATION);
+ virtual SWITCH_DECLARE_CONSTRUCTOR ~DTMF();
+ };
+
class Stream {
protected:
switch_stream_handle_t mystream;
@@ -172,7 +180,7 @@
SWITCH_DECLARE_CONSTRUCTOR CoreSession();
SWITCH_DECLARE_CONSTRUCTOR CoreSession(char *uuid);
SWITCH_DECLARE_CONSTRUCTOR CoreSession(switch_core_session_t *new_session);
- SWITCH_DECLARE_CONSTRUCTOR ~ CoreSession();
+ virtual SWITCH_DECLARE_CONSTRUCTOR ~ CoreSession();
switch_core_session_t *session;
switch_channel_t *channel;
unsigned int flags;
Added: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/DTMF.java
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/DTMF.java Fri Jul 11 15:42:52 2008
@@ -0,0 +1,60 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.35
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+package org.freeswitch.swig;
+
+public class DTMF {
+ private long swigCPtr;
+ protected boolean swigCMemOwn;
+
+ protected DTMF(long cPtr, boolean cMemoryOwn) {
+ swigCMemOwn = cMemoryOwn;
+ swigCPtr = cPtr;
+ }
+
+ protected static long getCPtr(DTMF obj) {
+ return (obj == null) ? 0 : obj.swigCPtr;
+ }
+
+ protected void finalize() {
+ delete();
+ }
+
+ public synchronized void delete() {
+ if(swigCPtr != 0 && swigCMemOwn) {
+ swigCMemOwn = false;
+ freeswitchJNI.delete_DTMF(swigCPtr);
+ }
+ swigCPtr = 0;
+ }
+
+ public void setDigit(char value) {
+ freeswitchJNI.DTMF_digit_set(swigCPtr, this, value);
+ }
+
+ public char getDigit() {
+ return freeswitchJNI.DTMF_digit_get(swigCPtr, this);
+ }
+
+ public void setDuration(SWIGTYPE_p_uint32_t value) {
+ freeswitchJNI.DTMF_duration_set(swigCPtr, this, SWIGTYPE_p_uint32_t.getCPtr(value));
+ }
+
+ public SWIGTYPE_p_uint32_t getDuration() {
+ return new SWIGTYPE_p_uint32_t(freeswitchJNI.DTMF_duration_get(swigCPtr, this), true);
+ }
+
+ public DTMF(char idigit, SWIGTYPE_p_uint32_t iduration) {
+ this(freeswitchJNI.new_DTMF__SWIG_0(idigit, SWIGTYPE_p_uint32_t.getCPtr(iduration)), true);
+ }
+
+ public DTMF(char idigit) {
+ this(freeswitchJNI.new_DTMF__SWIG_1(idigit), true);
+ }
+
+}
Added: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_uint32_t.java
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_uint32_t.java Fri Jul 11 15:42:52 2008
@@ -0,0 +1,26 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.35
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+package org.freeswitch.swig;
+
+public class SWIGTYPE_p_uint32_t {
+ private long swigCPtr;
+
+ protected SWIGTYPE_p_uint32_t(long cPtr, boolean futureUse) {
+ swigCPtr = cPtr;
+ }
+
+ protected SWIGTYPE_p_uint32_t() {
+ swigCPtr = 0;
+ }
+
+ protected static long getCPtr(SWIGTYPE_p_uint32_t obj) {
+ return (obj == null) ? 0 : obj.swigCPtr;
+ }
+}
+
Modified: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java (original)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java Fri Jul 11 15:42:52 2008
@@ -32,6 +32,13 @@
public final static native int S_HUP_get();
public final static native int S_FREE_get();
public final static native int S_RDLOCK_get();
+ public final static native void DTMF_digit_set(long jarg1, DTMF jarg1_, char jarg2);
+ public final static native char DTMF_digit_get(long jarg1, DTMF jarg1_);
+ public final static native void DTMF_duration_set(long jarg1, DTMF jarg1_, long jarg2);
+ public final static native long DTMF_duration_get(long jarg1, DTMF jarg1_);
+ public final static native long new_DTMF__SWIG_0(char jarg1, long jarg2);
+ public final static native long new_DTMF__SWIG_1(char jarg1);
+ public final static native void delete_DTMF(long jarg1);
public final static native long new_Stream__SWIG_0();
public final static native long new_Stream__SWIG_1(long jarg1);
public final static native void delete_Stream(long jarg1);
Modified: freeswitch/trunk/src/mod/languages/mod_java/switch_swig_wrap.cpp
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_java/switch_swig_wrap.cpp (original)
+++ freeswitch/trunk/src/mod/languages/mod_java/switch_swig_wrap.cpp Fri Jul 11 15:42:52 2008
@@ -643,6 +643,117 @@
}
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_DTMF_1digit_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jchar jarg2) {
+ DTMF *arg1 = (DTMF *) 0 ;
+ char arg2 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(DTMF **)&jarg1;
+ arg2 = (char)jarg2;
+ if (arg1) (arg1)->digit = arg2;
+
+}
+
+
+SWIGEXPORT jchar JNICALL Java_org_freeswitch_swig_freeswitchJNI_DTMF_1digit_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jchar jresult = 0 ;
+ DTMF *arg1 = (DTMF *) 0 ;
+ char result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(DTMF **)&jarg1;
+ result = (char) ((arg1)->digit);
+ jresult = (jchar)result;
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_DTMF_1duration_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
+ DTMF *arg1 = (DTMF *) 0 ;
+ uint32_t arg2 ;
+ uint32_t *argp2 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(DTMF **)&jarg1;
+ argp2 = *(uint32_t **)&jarg2;
+ if (!argp2) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null uint32_t");
+ return ;
+ }
+ arg2 = *argp2;
+ if (arg1) (arg1)->duration = arg2;
+
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_DTMF_1duration_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jlong jresult = 0 ;
+ DTMF *arg1 = (DTMF *) 0 ;
+ uint32_t result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(DTMF **)&jarg1;
+ result = ((arg1)->duration);
+ *(uint32_t **)&jresult = new uint32_t((uint32_t &)result);
+ return jresult;
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_new_1DTMF_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jchar jarg1, jlong jarg2) {
+ jlong jresult = 0 ;
+ char arg1 ;
+ uint32_t arg2 ;
+ DTMF *result = 0 ;
+ uint32_t *argp2 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (char)jarg1;
+ argp2 = *(uint32_t **)&jarg2;
+ if (!argp2) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null uint32_t");
+ return 0;
+ }
+ arg2 = *argp2;
+ result = (DTMF *)new DTMF(arg1,arg2);
+ *(DTMF **)&jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_new_1DTMF_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jchar jarg1) {
+ jlong jresult = 0 ;
+ char arg1 ;
+ DTMF *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (char)jarg1;
+ result = (DTMF *)new DTMF(arg1);
+ *(DTMF **)&jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_delete_1DTMF(JNIEnv *jenv, jclass jcls, jlong jarg1) {
+ DTMF *arg1 = (DTMF *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(DTMF **)&jarg1;
+ delete arg1;
+
+}
+
+
SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_new_1Stream_1_1SWIG_10(JNIEnv *jenv, jclass jcls) {
jlong jresult = 0 ;
Stream *result = 0 ;
Modified: freeswitch/trunk/src/mod/languages/mod_lua/mod_lua_wrap.cpp
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_lua/mod_lua_wrap.cpp (original)
+++ freeswitch/trunk/src/mod/languages/mod_lua/mod_lua_wrap.cpp Fri Jul 11 15:42:52 2008
@@ -1486,29 +1486,31 @@
#define SWIGTYPE_p_API swig_types[0]
#define SWIGTYPE_p_CoreSession swig_types[1]
-#define SWIGTYPE_p_Event swig_types[2]
-#define SWIGTYPE_p_EventConsumer swig_types[3]
-#define SWIGTYPE_p_IVRMenu swig_types[4]
-#define SWIGTYPE_p_LUA__Session swig_types[5]
-#define SWIGTYPE_p_Stream swig_types[6]
-#define SWIGTYPE_p_input_callback_state swig_types[7]
-#define SWIGTYPE_p_lua_State swig_types[8]
-#define SWIGTYPE_p_session_flag_t swig_types[9]
-#define SWIGTYPE_p_switch_channel_state_t swig_types[10]
-#define SWIGTYPE_p_switch_channel_t swig_types[11]
-#define SWIGTYPE_p_switch_core_session_t swig_types[12]
-#define SWIGTYPE_p_switch_event_node_t swig_types[13]
-#define SWIGTYPE_p_switch_event_t swig_types[14]
-#define SWIGTYPE_p_switch_event_types_t swig_types[15]
-#define SWIGTYPE_p_switch_input_args_t swig_types[16]
-#define SWIGTYPE_p_switch_input_type_t swig_types[17]
-#define SWIGTYPE_p_switch_priority_t swig_types[18]
-#define SWIGTYPE_p_switch_queue_t swig_types[19]
-#define SWIGTYPE_p_switch_status_t swig_types[20]
-#define SWIGTYPE_p_switch_stream_handle_t swig_types[21]
-#define SWIGTYPE_p_void swig_types[22]
-static swig_type_info *swig_types[24];
-static swig_module_info swig_module = {swig_types, 23, 0, 0, 0, 0};
+#define SWIGTYPE_p_DTMF swig_types[2]
+#define SWIGTYPE_p_Event swig_types[3]
+#define SWIGTYPE_p_EventConsumer swig_types[4]
+#define SWIGTYPE_p_IVRMenu swig_types[5]
+#define SWIGTYPE_p_LUA__Session swig_types[6]
+#define SWIGTYPE_p_Stream swig_types[7]
+#define SWIGTYPE_p_input_callback_state swig_types[8]
+#define SWIGTYPE_p_lua_State swig_types[9]
+#define SWIGTYPE_p_session_flag_t swig_types[10]
+#define SWIGTYPE_p_switch_channel_state_t swig_types[11]
+#define SWIGTYPE_p_switch_channel_t swig_types[12]
+#define SWIGTYPE_p_switch_core_session_t swig_types[13]
+#define SWIGTYPE_p_switch_event_node_t swig_types[14]
+#define SWIGTYPE_p_switch_event_t swig_types[15]
+#define SWIGTYPE_p_switch_event_types_t swig_types[16]
+#define SWIGTYPE_p_switch_input_args_t swig_types[17]
+#define SWIGTYPE_p_switch_input_type_t swig_types[18]
+#define SWIGTYPE_p_switch_priority_t swig_types[19]
+#define SWIGTYPE_p_switch_queue_t swig_types[20]
+#define SWIGTYPE_p_switch_status_t swig_types[21]
+#define SWIGTYPE_p_switch_stream_handle_t swig_types[22]
+#define SWIGTYPE_p_uint32_t swig_types[23]
+#define SWIGTYPE_p_void swig_types[24]
+static swig_type_info *swig_types[26];
+static swig_module_info swig_module = {swig_types, 25, 0, 0, 0, 0};
#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
@@ -2143,6 +2145,254 @@
static const char *swig_input_callback_state_t_base_names[] = {0};
static swig_lua_class _wrap_class_input_callback_state_t = { "input_callback_state_t", &SWIGTYPE_p_input_callback_state,_wrap_new_input_callback_state_t, swig_delete_input_callback_state_t, swig_input_callback_state_t_methods, swig_input_callback_state_t_attributes, swig_input_callback_state_t_bases, swig_input_callback_state_t_base_names };
+static int _wrap_DTMF_digit_set(lua_State* L) {
+ int SWIG_arg = -1;
+ DTMF *arg1 = (DTMF *) 0 ;
+ char arg2 ;
+
+ SWIG_check_num_args("digit",2,2)
+ if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("digit",1,"DTMF *");
+ if(!lua_isstring(L,2)) SWIG_fail_arg("digit",2,"char");
+
+ if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_DTMF,0))){
+ SWIG_fail_ptr("DTMF_digit_set",1,SWIGTYPE_p_DTMF);
+ }
+
+ arg2 = (lua_tostring(L, 2))[0];
+ if (arg1) (arg1)->digit = arg2;
+
+ SWIG_arg=0;
+
+ return SWIG_arg;
+
+ if(0) SWIG_fail;
+
+fail:
+ lua_error(L);
+ return SWIG_arg;
+}
+
+
+static int _wrap_DTMF_digit_get(lua_State* L) {
+ int SWIG_arg = -1;
+ DTMF *arg1 = (DTMF *) 0 ;
+ char result;
+
+ SWIG_check_num_args("digit",1,1)
+ if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("digit",1,"DTMF *");
+
+ if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_DTMF,0))){
+ SWIG_fail_ptr("DTMF_digit_get",1,SWIGTYPE_p_DTMF);
+ }
+
+ result = (char) ((arg1)->digit);
+ SWIG_arg=0;
+ lua_pushfstring(L,"%c",result); SWIG_arg++;
+ return SWIG_arg;
+
+ if(0) SWIG_fail;
+
+fail:
+ lua_error(L);
+ return SWIG_arg;
+}
+
+
+static int _wrap_DTMF_duration_set(lua_State* L) {
+ int SWIG_arg = -1;
+ DTMF *arg1 = (DTMF *) 0 ;
+ uint32_t arg2 ;
+ uint32_t *argp2 ;
+
+ SWIG_check_num_args("duration",2,2)
+ if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("duration",1,"DTMF *");
+ if(!lua_isuserdata(L,2)) SWIG_fail_arg("duration",2,"uint32_t");
+
+ if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_DTMF,0))){
+ SWIG_fail_ptr("DTMF_duration_set",1,SWIGTYPE_p_DTMF);
+ }
+
+
+ if (!SWIG_IsOK(SWIG_ConvertPtr(L,2,(void**)&argp2,SWIGTYPE_p_uint32_t,0))){
+ SWIG_fail_ptr("DTMF_duration_set",2,SWIGTYPE_p_uint32_t);
+ }
+ arg2 = *argp2;
+
+ if (arg1) (arg1)->duration = arg2;
+
+ SWIG_arg=0;
+
+ return SWIG_arg;
+
+ if(0) SWIG_fail;
+
+fail:
+ lua_error(L);
+ return SWIG_arg;
+}
+
+
+static int _wrap_DTMF_duration_get(lua_State* L) {
+ int SWIG_arg = -1;
+ DTMF *arg1 = (DTMF *) 0 ;
+ uint32_t result;
+
+ SWIG_check_num_args("duration",1,1)
+ if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("duration",1,"DTMF *");
+
+ if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_DTMF,0))){
+ SWIG_fail_ptr("DTMF_duration_get",1,SWIGTYPE_p_DTMF);
+ }
+
+ result = ((arg1)->duration);
+ SWIG_arg=0;
+ {
+ uint32_t * resultptr = new uint32_t((uint32_t &) result);
+ SWIG_NewPointerObj(L,(void *) resultptr,SWIGTYPE_p_uint32_t,1); SWIG_arg++;
+ }
+ return SWIG_arg;
+
+ if(0) SWIG_fail;
+
+fail:
+ lua_error(L);
+ return SWIG_arg;
+}
+
+
+static int _wrap_new_DTMF__SWIG_0(lua_State* L) {
+ int SWIG_arg = -1;
+ char arg1 ;
+ uint32_t arg2 ;
+ DTMF *result = 0 ;
+ uint32_t *argp2 ;
+
+ SWIG_check_num_args("DTMF",2,2)
+ if(!lua_isstring(L,1)) SWIG_fail_arg("DTMF",1,"char");
+ if(!lua_isuserdata(L,2)) SWIG_fail_arg("DTMF",2,"uint32_t");
+ arg1 = (lua_tostring(L, 1))[0];
+
+ if (!SWIG_IsOK(SWIG_ConvertPtr(L,2,(void**)&argp2,SWIGTYPE_p_uint32_t,0))){
+ SWIG_fail_ptr("new_DTMF",2,SWIGTYPE_p_uint32_t);
+ }
+ arg2 = *argp2;
+
+ result = (DTMF *)new DTMF(arg1,arg2);
+ SWIG_arg=0;
+ SWIG_NewPointerObj(L,result,SWIGTYPE_p_DTMF,1); SWIG_arg++;
+ return SWIG_arg;
+
+ if(0) SWIG_fail;
+
+fail:
+ lua_error(L);
+ return SWIG_arg;
+}
+
+
+static int _wrap_new_DTMF__SWIG_1(lua_State* L) {
+ int SWIG_arg = -1;
+ char arg1 ;
+ DTMF *result = 0 ;
+
+ SWIG_check_num_args("DTMF",1,1)
+ if(!lua_isstring(L,1)) SWIG_fail_arg("DTMF",1,"char");
+ arg1 = (lua_tostring(L, 1))[0];
+ result = (DTMF *)new DTMF(arg1);
+ SWIG_arg=0;
+ SWIG_NewPointerObj(L,result,SWIGTYPE_p_DTMF,1); SWIG_arg++;
+ return SWIG_arg;
+
+ if(0) SWIG_fail;
+
+fail:
+ lua_error(L);
+ return SWIG_arg;
+}
+
+
+static int _wrap_new_DTMF(lua_State* L) {
+ int argc;
+ int argv[3]={
+ 1,2,3
+ };
+
+ argc = lua_gettop(L);
+ if (argc == 1) {
+ int _v;
+ {
+ _v = lua_isstring(L,argv[0]) && (lua_strlen(L,argv[0])==1);
+ }
+ if (_v) {
+ return _wrap_new_DTMF__SWIG_1(L);
+ }
+ }
+ if (argc == 2) {
+ int _v;
+ {
+ _v = lua_isstring(L,argv[0]) && (lua_strlen(L,argv[0])==1);
+ }
+ if (_v) {
+ {
+ void *ptr;
+ if (lua_isuserdata(L,argv[1])==0 || SWIG_ConvertPtr(L,argv[1], (void **) &ptr, SWIGTYPE_p_uint32_t, 0)) {
+ _v = 0;
+ } else {
+ _v = 1;
+ }
+ }
+ if (_v) {
+ return _wrap_new_DTMF__SWIG_0(L);
+ }
+ }
+ }
+
+ lua_pushstring(L,"No matching function for overloaded 'new_DTMF'");
+ lua_error(L);return 0;
+}
+
+
+static int _wrap_delete_DTMF(lua_State* L) {
+ int SWIG_arg = -1;
+ DTMF *arg1 = (DTMF *) 0 ;
+
+ SWIG_check_num_args("DTMF",1,1)
+ if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("DTMF",1,"DTMF *");
+
+ if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_DTMF,SWIG_POINTER_DISOWN))){
+ SWIG_fail_ptr("delete_DTMF",1,SWIGTYPE_p_DTMF);
+ }
+
+ delete arg1;
+
+ SWIG_arg=0;
+
+ return SWIG_arg;
+
+ if(0) SWIG_fail;
+
+fail:
+ lua_error(L);
+ return SWIG_arg;
+}
+
+
+static void swig_delete_DTMF(void *obj) {
+DTMF *arg1 = (DTMF *) obj;
+delete arg1;
+}
+static swig_lua_method swig_DTMF_methods[] = {
+ {0,0}
+};
+static swig_lua_attribute swig_DTMF_attributes[] = {
+ { "digit", _wrap_DTMF_digit_get, _wrap_DTMF_digit_set},
+ { "duration", _wrap_DTMF_duration_get, _wrap_DTMF_duration_set},
+ {0,0,0}
+};
+static swig_lua_class *swig_DTMF_bases[] = {0};
+static const char *swig_DTMF_base_names[] = {0};
+static swig_lua_class _wrap_class_DTMF = { "DTMF", &SWIGTYPE_p_DTMF,_wrap_new_DTMF, swig_delete_DTMF, swig_DTMF_methods, swig_DTMF_attributes, swig_DTMF_bases, swig_DTMF_base_names };
+
static int _wrap_new_Stream__SWIG_0(lua_State* L) {
int SWIG_arg = -1;
Stream *result = 0 ;
@@ -7029,6 +7279,7 @@
}
static swig_type_info _swigt__p_API = {"_p_API", "API *", 0, 0, (void*)&_wrap_class_API, 0};
static swig_type_info _swigt__p_CoreSession = {"_p_CoreSession", "CoreSession *", 0, 0, (void*)&_wrap_class_CoreSession, 0};
+static swig_type_info _swigt__p_DTMF = {"_p_DTMF", "DTMF *", 0, 0, (void*)&_wrap_class_DTMF, 0};
static swig_type_info _swigt__p_Event = {"_p_Event", "Event *", 0, 0, (void*)&_wrap_class_Event, 0};
static swig_type_info _swigt__p_EventConsumer = {"_p_EventConsumer", "EventConsumer *", 0, 0, (void*)&_wrap_class_EventConsumer, 0};
static swig_type_info _swigt__p_IVRMenu = {"_p_IVRMenu", "IVRMenu *", 0, 0, (void*)&_wrap_class_IVRMenu, 0};
@@ -7049,11 +7300,13 @@
static swig_type_info _swigt__p_switch_queue_t = {"_p_switch_queue_t", "switch_queue_t *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_switch_status_t = {"_p_switch_status_t", "switch_status_t *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_switch_stream_handle_t = {"_p_switch_stream_handle_t", "switch_stream_handle_t *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_uint32_t = {"_p_uint32_t", "uint32_t *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_void = {"_p_void", "void *", 0, 0, (void*)0, 0};
static swig_type_info *swig_type_initial[] = {
&_swigt__p_API,
&_swigt__p_CoreSession,
+ &_swigt__p_DTMF,
&_swigt__p_Event,
&_swigt__p_EventConsumer,
&_swigt__p_IVRMenu,
@@ -7074,11 +7327,13 @@
&_swigt__p_switch_queue_t,
&_swigt__p_switch_status_t,
&_swigt__p_switch_stream_handle_t,
+ &_swigt__p_uint32_t,
&_swigt__p_void,
};
static swig_cast_info _swigc__p_API[] = { {&_swigt__p_API, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_CoreSession[] = { {&_swigt__p_CoreSession, 0, 0, 0}, {&_swigt__p_LUA__Session, _p_LUA__SessionTo_p_CoreSession, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_DTMF[] = { {&_swigt__p_DTMF, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Event[] = { {&_swigt__p_Event, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_EventConsumer[] = { {&_swigt__p_EventConsumer, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_IVRMenu[] = { {&_swigt__p_IVRMenu, 0, 0, 0},{0, 0, 0, 0}};
@@ -7099,11 +7354,13 @@
static swig_cast_info _swigc__p_switch_queue_t[] = { {&_swigt__p_switch_queue_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_switch_status_t[] = { {&_swigt__p_switch_status_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_switch_stream_handle_t[] = { {&_swigt__p_switch_stream_handle_t, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_uint32_t[] = { {&_swigt__p_uint32_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_void[] = { {&_swigt__p_void, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info *swig_cast_initial[] = {
_swigc__p_API,
_swigc__p_CoreSession,
+ _swigc__p_DTMF,
_swigc__p_Event,
_swigc__p_EventConsumer,
_swigc__p_IVRMenu,
@@ -7124,6 +7381,7 @@
_swigc__p_switch_queue_t,
_swigc__p_switch_status_t,
_swigc__p_switch_stream_handle_t,
+ _swigc__p_uint32_t,
_swigc__p_void,
};
Modified: freeswitch/trunk/src/mod/languages/mod_perl/freeswitch.pm
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_perl/freeswitch.pm (original)
+++ freeswitch/trunk/src/mod/languages/mod_perl/freeswitch.pm Fri Jul 11 15:42:52 2008
@@ -179,6 +179,47 @@
}
+############# Class : freeswitch::DTMF ##############
+
+package freeswitch::DTMF;
+use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
+ at ISA = qw( freeswitch );
+%OWNER = ();
+%ITERATORS = ();
+*swig_digit_get = *freeswitchc::DTMF_digit_get;
+*swig_digit_set = *freeswitchc::DTMF_digit_set;
+*swig_duration_get = *freeswitchc::DTMF_duration_get;
+*swig_duration_set = *freeswitchc::DTMF_duration_set;
+sub new {
+ my $pkg = shift;
+ my $self = freeswitchc::new_DTMF(@_);
+ bless $self, $pkg if defined($self);
+}
+
+sub DESTROY {
+ return unless $_[0]->isa('HASH');
+ my $self = tied(%{$_[0]});
+ return unless defined $self;
+ delete $ITERATORS{$self};
+ if (exists $OWNER{$self}) {
+ freeswitchc::delete_DTMF($self);
+ delete $OWNER{$self};
+ }
+}
+
+sub DISOWN {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ delete $OWNER{$ptr};
+}
+
+sub ACQUIRE {
+ my $self = shift;
+ my $ptr = tied(%$self);
+ $OWNER{$ptr} = 1;
+}
+
+
############# Class : freeswitch::Stream ##############
package freeswitch::Stream;
Modified: freeswitch/trunk/src/mod/languages/mod_perl/mod_perl_wrap.cpp
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_perl/mod_perl_wrap.cpp (original)
+++ freeswitch/trunk/src/mod/languages/mod_perl/mod_perl_wrap.cpp Fri Jul 11 15:42:52 2008
@@ -1448,30 +1448,32 @@
#define SWIGTYPE_p_API swig_types[0]
#define SWIGTYPE_p_CoreSession swig_types[1]
-#define SWIGTYPE_p_Event swig_types[2]
-#define SWIGTYPE_p_EventConsumer swig_types[3]
-#define SWIGTYPE_p_IVRMenu swig_types[4]
-#define SWIGTYPE_p_PERL__Session swig_types[5]
-#define SWIGTYPE_p_PerlInterpreter swig_types[6]
-#define SWIGTYPE_p_Stream swig_types[7]
-#define SWIGTYPE_p_char swig_types[8]
-#define SWIGTYPE_p_input_callback_state swig_types[9]
-#define SWIGTYPE_p_session_flag_t swig_types[10]
-#define SWIGTYPE_p_switch_channel_state_t swig_types[11]
-#define SWIGTYPE_p_switch_channel_t swig_types[12]
-#define SWIGTYPE_p_switch_core_session_t swig_types[13]
-#define SWIGTYPE_p_switch_event_node_t swig_types[14]
-#define SWIGTYPE_p_switch_event_t swig_types[15]
-#define SWIGTYPE_p_switch_event_types_t swig_types[16]
-#define SWIGTYPE_p_switch_input_args_t swig_types[17]
-#define SWIGTYPE_p_switch_input_type_t swig_types[18]
-#define SWIGTYPE_p_switch_priority_t swig_types[19]
-#define SWIGTYPE_p_switch_queue_t swig_types[20]
-#define SWIGTYPE_p_switch_status_t swig_types[21]
-#define SWIGTYPE_p_switch_stream_handle_t swig_types[22]
-#define SWIGTYPE_p_void swig_types[23]
-static swig_type_info *swig_types[25];
-static swig_module_info swig_module = {swig_types, 24, 0, 0, 0, 0};
+#define SWIGTYPE_p_DTMF swig_types[2]
+#define SWIGTYPE_p_Event swig_types[3]
+#define SWIGTYPE_p_EventConsumer swig_types[4]
+#define SWIGTYPE_p_IVRMenu swig_types[5]
+#define SWIGTYPE_p_PERL__Session swig_types[6]
+#define SWIGTYPE_p_PerlInterpreter swig_types[7]
+#define SWIGTYPE_p_Stream swig_types[8]
+#define SWIGTYPE_p_char swig_types[9]
+#define SWIGTYPE_p_input_callback_state swig_types[10]
+#define SWIGTYPE_p_session_flag_t swig_types[11]
+#define SWIGTYPE_p_switch_channel_state_t swig_types[12]
+#define SWIGTYPE_p_switch_channel_t swig_types[13]
+#define SWIGTYPE_p_switch_core_session_t swig_types[14]
+#define SWIGTYPE_p_switch_event_node_t swig_types[15]
+#define SWIGTYPE_p_switch_event_t swig_types[16]
+#define SWIGTYPE_p_switch_event_types_t swig_types[17]
+#define SWIGTYPE_p_switch_input_args_t swig_types[18]
+#define SWIGTYPE_p_switch_input_type_t swig_types[19]
+#define SWIGTYPE_p_switch_priority_t swig_types[20]
+#define SWIGTYPE_p_switch_queue_t swig_types[21]
+#define SWIGTYPE_p_switch_status_t swig_types[22]
+#define SWIGTYPE_p_switch_stream_handle_t swig_types[23]
+#define SWIGTYPE_p_uint32_t swig_types[24]
+#define SWIGTYPE_p_void swig_types[25]
+static swig_type_info *swig_types[27];
+static swig_module_info swig_module = {swig_types, 26, 0, 0, 0, 0};
#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
@@ -1726,6 +1728,56 @@
}
+SWIGINTERN int
+SWIG_AsCharArray(SV * obj, char *val, size_t size)
+{
+ char* cptr = 0; size_t csize = 0; int alloc = SWIG_OLDOBJ;
+ int res = SWIG_AsCharPtrAndSize(obj, &cptr, &csize, &alloc);
+ if (SWIG_IsOK(res)) {
+ if ((csize == size + 1) && cptr && !(cptr[csize-1])) --csize;
+ if (csize <= size) {
+ if (val) {
+ if (csize) memcpy(val, cptr, csize*sizeof(char));
+ if (csize < size) memset(val + csize, 0, (size - csize)*sizeof(char));
+ }
+ if (alloc == SWIG_NEWOBJ) {
+ delete[] cptr;
+ res = SWIG_DelNewMask(res);
+ }
+ return res;
+ }
+ if (alloc == SWIG_NEWOBJ) delete[] cptr;
+ }
+ return SWIG_TypeError;
+}
+
+
+SWIGINTERN int
+SWIG_AsVal_char SWIG_PERL_DECL_ARGS_2(SV * obj, char *val)
+{
+ int res = SWIG_AsCharArray(obj, val, 1);
+ if (!SWIG_IsOK(res)) {
+ long v;
+ res = SWIG_AddCast(SWIG_AsVal_long SWIG_PERL_CALL_ARGS_2(obj, &v));
+ if (SWIG_IsOK(res)) {
+ if ((CHAR_MIN <= v) && (v <= CHAR_MAX)) {
+ if (val) *val = static_cast< char >(v);
+ } else {
+ res = SWIG_OverflowError;
+ }
+ }
+ }
+ return res;
+}
+
+
+SWIGINTERNINLINE SV *
+SWIG_From_char SWIG_PERL_DECL_ARGS_1(char c)
+{
+ return SWIG_FromCharPtrAndSize(&c,1);
+}
+
+
SWIGINTERNINLINE SV *
SWIG_From_bool SWIG_PERL_DECL_ARGS_1(bool value)
{
@@ -2664,6 +2716,313 @@
}
+XS(_wrap_DTMF_digit_set) {
+ {
+ DTMF *arg1 = (DTMF *) 0 ;
+ char arg2 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ char val2 ;
+ int ecode2 = 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: DTMF_digit_set(self,digit);");
+ }
+ res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_DTMF, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DTMF_digit_set" "', argument " "1"" of type '" "DTMF *""'");
+ }
+ arg1 = reinterpret_cast< DTMF * >(argp1);
+ ecode2 = SWIG_AsVal_char SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
+ if (!SWIG_IsOK(ecode2)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "DTMF_digit_set" "', argument " "2"" of type '" "char""'");
+ }
+ arg2 = static_cast< char >(val2);
+ if (arg1) (arg1)->digit = arg2;
+
+
+
+
+ XSRETURN(argvi);
+ fail:
+
+
+ SWIG_croak_null();
+ }
+}
+
+
+XS(_wrap_DTMF_digit_get) {
+ {
+ DTMF *arg1 = (DTMF *) 0 ;
+ char result;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: DTMF_digit_get(self);");
+ }
+ res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_DTMF, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DTMF_digit_get" "', argument " "1"" of type '" "DTMF *""'");
+ }
+ arg1 = reinterpret_cast< DTMF * >(argp1);
+ result = (char) ((arg1)->digit);
+ ST(argvi) = SWIG_From_char SWIG_PERL_CALL_ARGS_1(static_cast< char >(result)); argvi++ ;
+
+ XSRETURN(argvi);
+ fail:
+
+ SWIG_croak_null();
+ }
+}
+
+
+XS(_wrap_DTMF_duration_set) {
+ {
+ DTMF *arg1 = (DTMF *) 0 ;
+ uint32_t arg2 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ void *argp2 ;
+ int res2 = 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: DTMF_duration_set(self,duration);");
+ }
+ res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_DTMF, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DTMF_duration_set" "', argument " "1"" of type '" "DTMF *""'");
+ }
+ arg1 = reinterpret_cast< DTMF * >(argp1);
+ {
+ res2 = SWIG_ConvertPtr(ST(1), &argp2, SWIGTYPE_p_uint32_t, 0 );
+ if (!SWIG_IsOK(res2)) {
+ SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "DTMF_duration_set" "', argument " "2"" of type '" "uint32_t""'");
+ }
+ if (!argp2) {
+ SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "DTMF_duration_set" "', argument " "2"" of type '" "uint32_t""'");
+ } else {
+ arg2 = *(reinterpret_cast< uint32_t * >(argp2));
+ }
+ }
+ if (arg1) (arg1)->duration = arg2;
+
+
+
+ XSRETURN(argvi);
+ fail:
+
+ SWIG_croak_null();
+ }
+}
+
+
+XS(_wrap_DTMF_duration_get) {
+ {
+ DTMF *arg1 = (DTMF *) 0 ;
+ uint32_t result;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: DTMF_duration_get(self);");
+ }
+ res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_DTMF, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DTMF_duration_get" "', argument " "1"" of type '" "DTMF *""'");
+ }
+ arg1 = reinterpret_cast< DTMF * >(argp1);
+ result = ((arg1)->duration);
+ ST(argvi) = SWIG_NewPointerObj((new uint32_t(static_cast< const uint32_t& >(result))), SWIGTYPE_p_uint32_t, SWIG_POINTER_OWN | 0); argvi++ ;
+
+ XSRETURN(argvi);
+ fail:
+
+ SWIG_croak_null();
+ }
+}
+
+
+XS(_wrap_new_DTMF__SWIG_0) {
+ {
+ char arg1 ;
+ uint32_t arg2 ;
+ DTMF *result = 0 ;
+ char val1 ;
+ int ecode1 = 0 ;
+ void *argp2 ;
+ int res2 = 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 2) || (items > 2)) {
+ SWIG_croak("Usage: new_DTMF(idigit,iduration);");
+ }
+ ecode1 = SWIG_AsVal_char SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
+ if (!SWIG_IsOK(ecode1)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_DTMF" "', argument " "1"" of type '" "char""'");
+ }
+ arg1 = static_cast< char >(val1);
+ {
+ res2 = SWIG_ConvertPtr(ST(1), &argp2, SWIGTYPE_p_uint32_t, 0 );
+ if (!SWIG_IsOK(res2)) {
+ SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_DTMF" "', argument " "2"" of type '" "uint32_t""'");
+ }
+ if (!argp2) {
+ SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_DTMF" "', argument " "2"" of type '" "uint32_t""'");
+ } else {
+ arg2 = *(reinterpret_cast< uint32_t * >(argp2));
+ }
+ }
+ result = (DTMF *)new DTMF(arg1,arg2);
+ ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_DTMF, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
+
+ XSRETURN(argvi);
+ fail:
+
+ SWIG_croak_null();
+ }
+}
+
+
+XS(_wrap_new_DTMF__SWIG_1) {
+ {
+ char arg1 ;
+ DTMF *result = 0 ;
+ char val1 ;
+ int ecode1 = 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: new_DTMF(idigit);");
+ }
+ ecode1 = SWIG_AsVal_char SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
+ if (!SWIG_IsOK(ecode1)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_DTMF" "', argument " "1"" of type '" "char""'");
+ }
+ arg1 = static_cast< char >(val1);
+ result = (DTMF *)new DTMF(arg1);
+ ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_DTMF, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
+
+ XSRETURN(argvi);
+ fail:
+
+ SWIG_croak_null();
+ }
+}
+
+
+XS(_wrap_new_DTMF) {
+ dXSARGS;
+
+ {
+ unsigned long _index = 0;
+ SWIG_TypeRank _rank = 0;
+ if (items == 1) {
+ SWIG_TypeRank _ranki = 0;
+ SWIG_TypeRank _rankm = 0;
+ SWIG_TypeRank _pi = 1;
+ int _v = 0;
+ {
+ {
+ int res = SWIG_AsVal_char SWIG_PERL_CALL_ARGS_2(ST(0), NULL);
+ _v = SWIG_CheckState(res);
+ }
+ }
+ if (!_v) goto check_1;
+ _ranki += _v*_pi;
+ _rankm += _pi;
+ _pi *= SWIG_MAXCASTRANK;
+ if (!_index || (_ranki < _rank)) {
+ _rank = _ranki; _index = 1;
+ if (_rank == _rankm) goto dispatch;
+ }
+ }
+ check_1:
+
+ if (items == 2) {
+ SWIG_TypeRank _ranki = 0;
+ SWIG_TypeRank _rankm = 0;
+ SWIG_TypeRank _pi = 1;
+ int _v = 0;
+ {
+ {
+ int res = SWIG_AsVal_char SWIG_PERL_CALL_ARGS_2(ST(0), NULL);
+ _v = SWIG_CheckState(res);
+ }
+ }
+ if (!_v) goto check_2;
+ _ranki += _v*_pi;
+ _rankm += _pi;
+ _pi *= SWIG_MAXCASTRANK;
+ {
+ void *vptr = 0;
+ int res = SWIG_ConvertPtr(ST(1), &vptr, SWIGTYPE_p_uint32_t, 0);
+ _v = SWIG_CheckState(res);
+ }
+ if (!_v) goto check_2;
+ _ranki += _v*_pi;
+ _rankm += _pi;
+ _pi *= SWIG_MAXCASTRANK;
+ if (!_index || (_ranki < _rank)) {
+ _rank = _ranki; _index = 2;
+ if (_rank == _rankm) goto dispatch;
+ }
+ }
+ check_2:
+
+ dispatch:
+ switch(_index) {
+ case 1:
+ ++PL_markstack_ptr; SWIG_CALLXS(_wrap_new_DTMF__SWIG_1); return;
+ case 2:
+ ++PL_markstack_ptr; SWIG_CALLXS(_wrap_new_DTMF__SWIG_0); return;
+ }
+ }
+
+ croak("No matching function for overloaded 'new_DTMF'");
+ XSRETURN(0);
+}
+
+
+XS(_wrap_delete_DTMF) {
+ {
+ DTMF *arg1 = (DTMF *) 0 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+ SWIG_croak("Usage: delete_DTMF(self);");
+ }
+ res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_DTMF, SWIG_POINTER_DISOWN | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_DTMF" "', argument " "1"" of type '" "DTMF *""'");
+ }
+ arg1 = reinterpret_cast< DTMF * >(argp1);
+ delete arg1;
+
+
+
+ XSRETURN(argvi);
+ fail:
+
+ SWIG_croak_null();
+ }
+}
+
+
XS(_wrap_new_Stream__SWIG_0) {
{
Stream *result = 0 ;
@@ -9174,6 +9533,7 @@
}
static swig_type_info _swigt__p_API = {"_p_API", "API *", 0, 0, (void*)"freeswitch::API", 0};
static swig_type_info _swigt__p_CoreSession = {"_p_CoreSession", "CoreSession *", 0, 0, (void*)"freeswitch::CoreSession", 0};
+static swig_type_info _swigt__p_DTMF = {"_p_DTMF", "DTMF *", 0, 0, (void*)"freeswitch::DTMF", 0};
static swig_type_info _swigt__p_Event = {"_p_Event", "Event *", 0, 0, (void*)"freeswitch::Event", 0};
static swig_type_info _swigt__p_EventConsumer = {"_p_EventConsumer", "EventConsumer *", 0, 0, (void*)"freeswitch::EventConsumer", 0};
static swig_type_info _swigt__p_IVRMenu = {"_p_IVRMenu", "IVRMenu *", 0, 0, (void*)"freeswitch::IVRMenu", 0};
@@ -9195,11 +9555,13 @@
static swig_type_info _swigt__p_switch_queue_t = {"_p_switch_queue_t", "switch_queue_t *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_switch_status_t = {"_p_switch_status_t", "switch_status_t *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_switch_stream_handle_t = {"_p_switch_stream_handle_t", "switch_stream_handle_t *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_uint32_t = {"_p_uint32_t", "uint32_t *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_void = {"_p_void", "void *", 0, 0, (void*)0, 0};
static swig_type_info *swig_type_initial[] = {
&_swigt__p_API,
&_swigt__p_CoreSession,
+ &_swigt__p_DTMF,
&_swigt__p_Event,
&_swigt__p_EventConsumer,
&_swigt__p_IVRMenu,
@@ -9221,11 +9583,13 @@
&_swigt__p_switch_queue_t,
&_swigt__p_switch_status_t,
&_swigt__p_switch_stream_handle_t,
+ &_swigt__p_uint32_t,
&_swigt__p_void,
};
static swig_cast_info _swigc__p_API[] = { {&_swigt__p_API, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_CoreSession[] = { {&_swigt__p_CoreSession, 0, 0, 0}, {&_swigt__p_PERL__Session, _p_PERL__SessionTo_p_CoreSession, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_DTMF[] = { {&_swigt__p_DTMF, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Event[] = { {&_swigt__p_Event, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_EventConsumer[] = { {&_swigt__p_EventConsumer, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_IVRMenu[] = { {&_swigt__p_IVRMenu, 0, 0, 0},{0, 0, 0, 0}};
@@ -9247,11 +9611,13 @@
static swig_cast_info _swigc__p_switch_queue_t[] = { {&_swigt__p_switch_queue_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_switch_status_t[] = { {&_swigt__p_switch_status_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_switch_stream_handle_t[] = { {&_swigt__p_switch_stream_handle_t, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_uint32_t[] = { {&_swigt__p_uint32_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_void[] = { {&_swigt__p_void, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info *swig_cast_initial[] = {
_swigc__p_API,
_swigc__p_CoreSession,
+ _swigc__p_DTMF,
_swigc__p_Event,
_swigc__p_EventConsumer,
_swigc__p_IVRMenu,
@@ -9273,6 +9639,7 @@
_swigc__p_switch_queue_t,
_swigc__p_switch_status_t,
_swigc__p_switch_stream_handle_t,
+ _swigc__p_uint32_t,
_swigc__p_void,
};
@@ -9309,6 +9676,12 @@
{"freeswitchc::input_callback_state_t_funcargs_get", _wrap_input_callback_state_t_funcargs_get},
{"freeswitchc::new_input_callback_state_t", _wrap_new_input_callback_state_t},
{"freeswitchc::delete_input_callback_state_t", _wrap_delete_input_callback_state_t},
+{"freeswitchc::DTMF_digit_set", _wrap_DTMF_digit_set},
+{"freeswitchc::DTMF_digit_get", _wrap_DTMF_digit_get},
+{"freeswitchc::DTMF_duration_set", _wrap_DTMF_duration_set},
+{"freeswitchc::DTMF_duration_get", _wrap_DTMF_duration_get},
+{"freeswitchc::new_DTMF", _wrap_new_DTMF},
+{"freeswitchc::delete_DTMF", _wrap_delete_DTMF},
{"freeswitchc::new_Stream", _wrap_new_Stream},
{"freeswitchc::delete_Stream", _wrap_delete_Stream},
{"freeswitchc::Stream_write", _wrap_Stream_write},
@@ -9734,6 +10107,7 @@
sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(S_RDLOCK)));
SvREADONLY_on(sv);
} while(0) /*@SWIG@*/;
+ SWIG_TypeClientData(SWIGTYPE_p_DTMF, (void*) "freeswitch::DTMF");
SWIG_TypeClientData(SWIGTYPE_p_Stream, (void*) "freeswitch::Stream");
SWIG_TypeClientData(SWIGTYPE_p_Event, (void*) "freeswitch::Event");
SWIG_TypeClientData(SWIGTYPE_p_EventConsumer, (void*) "freeswitch::EventConsumer");
Modified: freeswitch/trunk/src/mod/languages/mod_python/Makefile.in
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_python/Makefile.in (original)
+++ freeswitch/trunk/src/mod/languages/mod_python/Makefile.in Fri Jul 11 15:42:52 2008
@@ -11,19 +11,20 @@
LINK=$(CXXLINK)
PYMOD=freeswitch
-PYTHON_SITE_DIR=@PYTHON_SITE_DIR@
+PYTHON_SITE_DIR=/usr/lib/python2.4/site-packages
SWIGCFILE=../../../switch_swig.c
SWIGIFILE=../../../switch_swig.i
-reswig:
- swig -python -shadow -c++ -I../../../../src/include -o mod_python_wrap.cpp mod_python.i
+reswig: swigclean mod_python_wrap.cpp
-switch_swig_wrap.o: switch_swig_wrap.c Makefile
- $(CC) -w $(CFLAGS) -c $< -o $@
+swigclean: clean
+ rm -f mod_python_wrap.* freeswitch.py
-switch_swig.o: $(SWIGCFILE) Makefile
- $(CC) -w $(CFLAGS) -c $< -o $@
+mod_python_wrap.cpp: mod_python_extra.c
+ swig -python -c++ -I../../../../src/include -oh mod_python_wrap.h -o mod_python_wrap.cpp mod_python.i
+ echo "#include \"mod_python_extra.c\"" >> mod_python_wrap.cpp
+ patch -s -p0 -i hack.diff
local_install:
mkdir -m755 -p $(DESTDIR)$(PYTHON_SITE_DIR)
Modified: freeswitch/trunk/src/mod/languages/mod_python/freeswitch.py
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_python/freeswitch.py (original)
+++ freeswitch/trunk/src/mod/languages/mod_python/freeswitch.py Fri Jul 11 15:42:52 2008
@@ -114,6 +114,27 @@
S_HUP = _freeswitch.S_HUP
S_FREE = _freeswitch.S_FREE
S_RDLOCK = _freeswitch.S_RDLOCK
+class DTMF(_object):
+ __swig_setmethods__ = {}
+ __setattr__ = lambda self, name, value: _swig_setattr(self, DTMF, name, value)
+ __swig_getmethods__ = {}
+ __getattr__ = lambda self, name: _swig_getattr(self, DTMF, name)
+ __repr__ = _swig_repr
+ __swig_setmethods__["digit"] = _freeswitch.DTMF_digit_set
+ __swig_getmethods__["digit"] = _freeswitch.DTMF_digit_get
+ if _newclass:digit = _swig_property(_freeswitch.DTMF_digit_get, _freeswitch.DTMF_digit_set)
+ __swig_setmethods__["duration"] = _freeswitch.DTMF_duration_set
+ __swig_getmethods__["duration"] = _freeswitch.DTMF_duration_get
+ if _newclass:duration = _swig_property(_freeswitch.DTMF_duration_get, _freeswitch.DTMF_duration_set)
+ def __init__(self, *args):
+ this = _freeswitch.new_DTMF(*args)
+ try: self.this.append(this)
+ except: self.this = this
+ __swig_destroy__ = _freeswitch.delete_DTMF
+ __del__ = lambda self : None;
+DTMF_swigregister = _freeswitch.DTMF_swigregister
+DTMF_swigregister(DTMF)
+
class Stream(_object):
__swig_setmethods__ = {}
__setattr__ = lambda self, name, value: _swig_setattr(self, Stream, name, value)
@@ -274,31 +295,43 @@
bridge = _freeswitch.bridge
hanguphook = _freeswitch.hanguphook
dtmf_callback = _freeswitch.dtmf_callback
-S_SWAPPED_IN = _freeswitch.S_SWAPPED_IN
-S_SWAPPED_OUT = _freeswitch.S_SWAPPED_OUT
-class PySession(CoreSession):
+class Session(CoreSession):
__swig_setmethods__ = {}
for _s in [CoreSession]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{}))
- __setattr__ = lambda self, name, value: _swig_setattr(self, PySession, name, value)
+ __setattr__ = lambda self, name, value: _swig_setattr(self, Session, name, value)
__swig_getmethods__ = {}
for _s in [CoreSession]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{}))
- __getattr__ = lambda self, name: _swig_getattr(self, PySession, name)
+ __getattr__ = lambda self, name: _swig_getattr(self, Session, name)
__repr__ = _swig_repr
def __init__(self, *args):
- this = _freeswitch.new_PySession(*args)
+ this = _freeswitch.new_Session(*args)
try: self.this.append(this)
except: self.this = this
- __swig_destroy__ = _freeswitch.delete_PySession
+ __swig_destroy__ = _freeswitch.delete_Session
__del__ = lambda self : None;
- def setDTMFCallback(*args): return _freeswitch.PySession_setDTMFCallback(*args)
- def setHangupHook(*args): return _freeswitch.PySession_setHangupHook(*args)
- def check_hangup_hook(*args): return _freeswitch.PySession_check_hangup_hook(*args)
- def hangup(*args): return _freeswitch.PySession_hangup(*args)
- def begin_allow_threads(*args): return _freeswitch.PySession_begin_allow_threads(*args)
- def end_allow_threads(*args): return _freeswitch.PySession_end_allow_threads(*args)
- def run_dtmf_callback(*args): return _freeswitch.PySession_run_dtmf_callback(*args)
-PySession_swigregister = _freeswitch.PySession_swigregister
-PySession_swigregister(PySession)
+ def begin_allow_threads(*args): return _freeswitch.Session_begin_allow_threads(*args)
+ def end_allow_threads(*args): return _freeswitch.Session_end_allow_threads(*args)
+ def check_hangup_hook(*args): return _freeswitch.Session_check_hangup_hook(*args)
+ def run_dtmf_callback(*args): return _freeswitch.Session_run_dtmf_callback(*args)
+ def setInputCallback(*args): return _freeswitch.Session_setInputCallback(*args)
+ def setHangupHook(*args): return _freeswitch.Session_setHangupHook(*args)
+ def ready(*args): return _freeswitch.Session_ready(*args)
+ __swig_setmethods__["cb_function"] = _freeswitch.Session_cb_function_set
+ __swig_getmethods__["cb_function"] = _freeswitch.Session_cb_function_get
+ if _newclass:cb_function = _swig_property(_freeswitch.Session_cb_function_get, _freeswitch.Session_cb_function_set)
+ __swig_setmethods__["cb_arg"] = _freeswitch.Session_cb_arg_set
+ __swig_getmethods__["cb_arg"] = _freeswitch.Session_cb_arg_get
+ if _newclass:cb_arg = _swig_property(_freeswitch.Session_cb_arg_get, _freeswitch.Session_cb_arg_set)
+ __swig_setmethods__["hangup_func"] = _freeswitch.Session_hangup_func_set
+ __swig_getmethods__["hangup_func"] = _freeswitch.Session_hangup_func_get
+ if _newclass:hangup_func = _swig_property(_freeswitch.Session_hangup_func_get, _freeswitch.Session_hangup_func_set)
+ __swig_setmethods__["hangup_func_arg"] = _freeswitch.Session_hangup_func_arg_set
+ __swig_getmethods__["hangup_func_arg"] = _freeswitch.Session_hangup_func_arg_get
+ if _newclass:hangup_func_arg = _swig_property(_freeswitch.Session_hangup_func_arg_get, _freeswitch.Session_hangup_func_arg_set)
+ def setPython(*args): return _freeswitch.Session_setPython(*args)
+ def setSelf(*args): return _freeswitch.Session_setSelf(*args)
+Session_swigregister = _freeswitch.Session_swigregister
+Session_swigregister(Session)
Modified: freeswitch/trunk/src/mod/languages/mod_python/freeswitch_python.cpp
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_python/freeswitch_python.cpp (original)
+++ freeswitch/trunk/src/mod/languages/mod_python/freeswitch_python.cpp Fri Jul 11 15:42:52 2008
@@ -1,320 +1,301 @@
+
+#include <switch.h>
#include "freeswitch_python.h"
+using namespace PYTHON;
-#define py_sanity_check(x) do { if (!session) { switch_log_printf(SWITCH_CHANNEL_LOG,SWITCH_LOG_ERROR, "session is not initalized\n"); return x;}} while(0)
-#define py_init_vars() do { caller_profile.source = "mod_python"; swapstate = S_SWAPPED_IN; } while(0)
+#define py_init_vars() cb_function = cb_arg = hangup_func = hangup_func_arg = NULL; hh = mark = 0; TS = NULL
-PySession::PySession():CoreSession()
+Session::Session():CoreSession()
{
py_init_vars();
}
-PySession::PySession(char *uuid):CoreSession(uuid)
+Session::Session(char *uuid):CoreSession(uuid)
{
py_init_vars();
}
-PySession::PySession(switch_core_session_t *new_session):CoreSession(new_session)
+Session::Session(switch_core_session_t *new_session):CoreSession(new_session)
{
py_init_vars();
}
+static switch_status_t python_hanguphook(switch_core_session_t *session_hungup);
-
-void PySession::setDTMFCallback(PyObject * pyfunc, char *funcargs)
+Session::~Session()
{
- py_sanity_check();
+
+ if (hangup_func) {
+ if (session) {
+ switch_core_event_hook_remove_state_change(session, python_hanguphook);
+ }
+ Py_XDECREF(hangup_func);
+ hangup_func = NULL;
+ }
+
+ if (hangup_func_arg) {
+ Py_XDECREF(hangup_func_arg);
+ hangup_func_arg = NULL;
+ }
- if (!PyCallable_Check(pyfunc)) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "DTMF function is not a python function.\n");
- return;
+ if (cb_function) {
+ Py_XDECREF(cb_function);
+ cb_function = NULL;
}
- Py_XINCREF(pyfunc);
- CoreSession::setDTMFCallback((void *) pyfunc, funcargs);
+ if (cb_arg) {
+ Py_XDECREF(cb_arg);
+ cb_arg = NULL;
+ }
+ if (Self) {
+ Py_XDECREF(Self);
+ }
}
-void PySession::setHangupHook(PyObject * pyfunc)
+bool Session::begin_allow_threads()
{
- if (!PyCallable_Check(pyfunc)) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Hangup hook is not a python function.\n");
- return;
+ do_hangup_hook();
+
+ if (!TS) {
+ TS = PyEval_SaveThread();
+ return true;
}
- // without this Py_XINCREF, there will be segfaults. basically the python
- // interpreter will not know that it should not GC this object.
- // callback example: http://docs.python.org/ext/callingPython.html
- Py_XINCREF(pyfunc);
- CoreSession::setHangupHook((void *) pyfunc);
+ return false;
}
-
-void PySession::check_hangup_hook()
+bool Session::end_allow_threads()
{
-#if 0
- PyObject *func;
- PyObject *result;
- char *resultStr;
- bool did_swap_in = false;
-#endif
-
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING,
- "check_hangup_hook has been DISABLED, please do not use hangup hooks in python code until further notice!\n");
- if (!session) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "No valid session\n");
- return;
+ if (!TS) {
+ return false;
}
- return;
-
- /*! NEEDS TO BE FIXED:
+ PyEval_RestoreThread(TS);
+ TS = NULL;
- // The did_swap_in boolean was added to fix the following problem:
- // Design flaw - we swap in threadstate based on the assumption that thread state
- // is currently _swapped out_ when this hangup hook is called. However, nothing known to
- // guarantee that, and if thread state is already swapped in when this is invoked,
- // bad things will happen.
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "check hangup hook end_allow_threads\n");
- did_swap_in = end_allow_threads();
+ do_hangup_hook();
- if (on_hangup == NULL) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "on_hangup is null\n");
- return;
- }
-
- func = (PyObject *) on_hangup;
-
- // TODO: to match js implementation, should pass the _python_ PySession
- // object instance wrapping this C++ PySession instance. but how do we do that?
- // for now, pass the uuid since its better than nothing
- PyObject* func_arg = Py_BuildValue("(s)", uuid);
-
- result = PyEval_CallObject(func, func_arg);
- Py_XDECREF(func_arg);
-
- if (result) {
- resultStr = (char *) PyString_AsString(result);
- // currently just ignore the result
- }
- else {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to call python hangup callback\n");
- PyErr_Print();
- PyErr_Clear();
- }
+ return true;
+}
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "check hangup hook begin_allow_threads\n");
- if (did_swap_in) {
- begin_allow_threads();
- }
+void Session::setPython(PyObject *state)
+{
+ Py = state;
+}
- Py_XDECREF(result);
- */
+void Session::setSelf(PyObject *state)
+{
+ Self = state;
}
-switch_status_t PySession::run_dtmf_callback(void *input, switch_input_type_t itype)
+PyObject *Session::getPython()
{
+ return Py;
+}
- PyObject *func, *arglist;
- PyObject *pyresult;
- PyObject *headerdict;
- char *resultStr;
- char *funcargs;
- bool did_swap_in = false;
+bool Session::ready()
+{
+ bool r;
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "run_dtmf_callback\n");
+ sanity_check(false);
+ r = switch_channel_ready(channel) != 0;
+ do_hangup_hook();
+ return r;
+}
- if (!cb_state.function) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "cb_state->function is null\n");
- return SWITCH_STATUS_FALSE;
+void Session::check_hangup_hook()
+{
+ if (hangup_func && (hook_state == CS_HANGUP || hook_state == CS_ROUTING)) {
+ hh++;
}
+}
- func = (PyObject *) cb_state.function;
- if (!func) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "cb_state->function is null\n");
- return SWITCH_STATUS_FALSE;
- } else {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "cb_state->function is NOT null\n");
- }
- if (!PyCallable_Check(func)) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "function not callable\n");
- return SWITCH_STATUS_FALSE;
- }
+void Session::do_hangup_hook()
+{
+ PyObject *result, *arglist;
+ const char *what = hook_state == CS_HANGUP ? "hangup" : "transfer";
- funcargs = (char *) cb_state.funcargs;
+ if (hh && !mark) {
+ mark++;
- if (itype == SWITCH_INPUT_TYPE_DTMF) {
+ if (hangup_func) {
+
+ if (!PyCallable_Check(hangup_func)) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "function not callable\n");
+ return;
+ }
- arglist = Py_BuildValue("(sis)", input, itype, funcargs);
- } else if (itype == SWITCH_INPUT_TYPE_EVENT) {
- // DUNNO if this is correct in the case we have an event
- // will be of type switch_event_t *event;
- // http://www.freeswitch.org/docs/structswitch__event.html
- switch_event_t *event = (switch_event_t *) input;
- arglist = Py_BuildValue("({s:s}is)", "body", event->body, itype, funcargs);
-
- // build a dictionary with all the headers
-
- switch_event_header_t *hp;
- headerdict = PyDict_New();
- for (hp = event->headers; hp; hp = hp->next) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Adding event header to result");
-
- // TODO: create PyObject pointers for name and value
- // and explicitly decref them. all ref counting stuff is
- // a mess and needs to be tested and looked at closer.
- PyDict_SetItem(headerdict, Py_BuildValue("s", hp->name), Py_BuildValue("s", hp->value));
+ if (!Self) {
+ mod_python_conjure_session(NULL, session, NULL);
+ }
+
+ if (hangup_func_arg) {
+ arglist = Py_BuildValue("(OsO)", Self, what, hangup_func_arg);
+ } else {
+ arglist = Py_BuildValue("(Os)", Self, what);
+ }
+ if (!(result = PyEval_CallObject(hangup_func, arglist))) {
+ PyErr_Print();
+ }
+
+ Py_XDECREF(arglist);
+ Py_XDECREF(hangup_func_arg);
}
-
- // add it to the main event dictionary (first arg in list)
- // under key 'headers'
- PyObject *dict = PyTuple_GetItem(arglist, 0);
- PyDict_SetItemString(dict, "headers", headerdict);
-
- Py_XDECREF(headerdict);
-
-
- } else {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unknown input type: %d\n", itype);
- return SWITCH_STATUS_FALSE;
}
+}
- if (!arglist) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "error building arglist");
- return SWITCH_STATUS_FALSE;
+static switch_status_t python_hanguphook(switch_core_session_t *session_hungup)
+{
+ switch_channel_t *channel = switch_core_session_get_channel(session_hungup);
+ CoreSession *coresession = NULL;
+ switch_channel_state_t state = switch_channel_get_state(channel);
+
+ if ((coresession = (CoreSession *) switch_channel_get_private(channel, "CoreSession"))) {
+ if (coresession->hook_state != state) {
+ coresession->hook_state = state;
+ coresession->check_hangup_hook();
+ }
}
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "run_dtmf_callback end_allow_threads\n");
- did_swap_in = end_allow_threads();
+ return SWITCH_STATUS_SUCCESS;
+}
- pyresult = PyEval_CallObject(func, arglist);
+void Session::setHangupHook(PyObject *pyfunc, PyObject *arg)
+{
- Py_XDECREF(arglist); // Trash arglist
+ if (!PyCallable_Check(pyfunc)) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Hangup hook is not a python function.\n");
+ return;
+ }
- if (pyresult && pyresult != Py_None) {
- resultStr = (char *) PyString_AsString(pyresult);
- switch_status_t cbresult = process_callback_result(resultStr);
- return cbresult;
- } else {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Python callback\n returned None");
- PyErr_Print();
- PyErr_Clear();
+ if (hangup_func) {
+ if (session) {
+ switch_core_event_hook_remove_state_change(session, python_hanguphook);
+ }
+ Py_XDECREF(hangup_func);
+ hangup_func = NULL;
}
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "run_dtmf_callback begin_allow_threads\n");
- if (did_swap_in) {
- begin_allow_threads();
+ if (hangup_func_arg) {
+ Py_XDECREF(hangup_func_arg);
+ hangup_func_arg = NULL;
}
+
+ hangup_func = pyfunc;
+ hangup_func_arg = arg;
- Py_XDECREF(pyresult);
+ Py_XINCREF(hangup_func);
- return SWITCH_STATUS_SUCCESS;
+ if (hangup_func_arg) {
+ Py_XINCREF(hangup_func_arg);
+ }
+
+ switch_channel_set_private(channel, "CoreSession", this);
+ hook_state = switch_channel_get_state(channel);
+ switch_core_event_hook_add_state_change(session, python_hanguphook);
}
-bool PySession::begin_allow_threads(void)
+void Session::setInputCallback(PyObject *cbfunc, PyObject *funcargs)
{
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "PySession::begin_allow_threads() called\n");
- if (!session) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "No valid session\n");
- return false;
+ if (!PyCallable_Check(cbfunc)) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Hangup hook is not a python function.\n");
+ return;
}
- // swap out threadstate and store in instance variable
- switch_channel_t *channel = switch_core_session_get_channel(session);
- PyThreadState *swapin_tstate = (PyThreadState *) switch_channel_get_private(channel, "SwapInThreadState");
- // so lets assume the thread state was swapped in when the python script was started,
- // therefore swapin_tstate will be NULL (because there is nothing to swap in, since its
- // _already_ swapped in.)
- if (swapin_tstate == NULL) {
- // currently swapped in
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Threadstate swap-out!\n");
- swapin_tstate = PyEval_SaveThread();
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "swapin_tstate: %p\n", swapin_tstate);
- // give future swapper-inners something to actually swap in
- switch_channel_set_private(channel, "SwapInThreadState", (void *) swapin_tstate);
- cb_state.threadState = threadState; // TODO: get rid of this
- args.buf = &cb_state;
- ap = &args;
- return true;
- } else {
- // currently swapped out
- return false;
+ if (cb_function) {
+ Py_XDECREF(cb_function);
+ cb_function = NULL;
}
-}
-
-bool PySession::end_allow_threads(void)
-{
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "PySession::end_allow_threads() called\n");
- // swap in threadstate from instance variable saved earlier
- if (!session) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "No valid session\n");
- return false;
+ if (cb_arg) {
+ Py_XDECREF(cb_arg);
+ cb_arg = NULL;
}
- switch_channel_t *channel = switch_core_session_get_channel(session);
- PyThreadState *swapin_tstate = (PyThreadState *) switch_channel_get_private(channel, "SwapInThreadState");
- if (swapin_tstate == NULL) {
- // currently swapped in
- return false;
- } else {
- // currently swapped out
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Threadstate swap-in!\n");
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "swapin_tstate: %p\n", swapin_tstate);
- PyEval_RestoreThread(swapin_tstate);
- // dont give any swapper-inners the opportunity to do a double swap
- switch_channel_set_private(channel, "SwapInThreadState", NULL);
- return true;
+ cb_function = cbfunc;
+ cb_arg = funcargs;
+ args.buf = this;
+ switch_channel_set_private(channel, "CoreSession", this);
+
+ Py_XINCREF(cb_function);
+
+ if (cb_arg) {
+ Py_XINCREF(cb_arg);
}
+ args.input_callback = dtmf_callback;
+ ap = &args;
}
-void PySession::hangup(char *cause)
+switch_status_t Session::run_dtmf_callback(void *input, switch_input_type_t itype)
{
+ PyObject *pyresult, *arglist, *io = NULL;
+ int ts = 0;
+ char *str = NULL, *what = "";
- // since we INCREF'd this function pointer earlier (so the py gc didnt reclaim it)
- // we have to DECREF it, or else the PySession dtor will never get called and
- // a zombie channel will be left over using up resources
+ if (TS) {
+ ts++;
+ end_allow_threads();
+ }
- if (cb_state.function != NULL) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "xdecref on cb_state_function\n");
- PyObject *func = (PyObject *) cb_state.function;
- Py_XDECREF(func);
+ if (!PyCallable_Check(cb_function)) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "function not callable\n");
+ return SWITCH_STATUS_FALSE;
+ }
+
+ if (itype == SWITCH_INPUT_TYPE_DTMF) {
+ switch_dtmf_t *dtmf = (switch_dtmf_t *) input;
+ io = mod_python_conjure_DTMF(dtmf->digit, dtmf->duration);
+ what = "dtmf";
+ } else if (itype == SWITCH_INPUT_TYPE_EVENT){
+ what = "event";
+ io = mod_python_conjure_event(NULL, (switch_event_t *) input, NULL);
} else {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "cb_state.function is null\n");
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "unsupported type!\n");
+ return SWITCH_STATUS_FALSE;
}
+ if (!Self) {
+ mod_python_conjure_session(NULL, session, NULL);
+ }
+
+ if (cb_arg) {
+ arglist = Py_BuildValue("(OsOO)", Self, what, io, cb_arg);
+ } else {
+ arglist = Py_BuildValue("(OsO)", Self, what, io);
+ }
- CoreSession::hangup(cause);
-
-}
-
+ if ((pyresult = PyEval_CallObject(cb_function, arglist))) {
+ str = (char *) PyString_AsString(pyresult);
+ } else {
+ PyErr_Print();
+ }
-PySession::~PySession()
-{
- // Should we do any cleanup here?
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "PySession::~PySession started\n");
+ Py_XDECREF(arglist);
+ Py_XDECREF(io);
- if (on_hangup) {
- PyObject *func = (PyObject *) on_hangup;
- Py_XDECREF(func);
+ if (cb_arg) {
+ Py_XDECREF(cb_arg);
}
-
- if (cb_state.function != NULL) {
- PyObject *func = (PyObject *) cb_state.function;
- Py_XDECREF(func);
+ if (ts) {
+ begin_allow_threads();
}
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "PySession::~PySession finished\n");
+ if (str) {
+ return process_callback_result(str);
+ }
+ return SWITCH_STATUS_FALSE;
}
Modified: freeswitch/trunk/src/mod/languages/mod_python/freeswitch_python.h
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_python/freeswitch_python.h (original)
+++ freeswitch/trunk/src/mod/languages/mod_python/freeswitch_python.h Fri Jul 11 15:42:52 2008
@@ -1,61 +1,45 @@
#ifndef FREESWITCH_PYTHON_H
#define FREESWITCH_PYTHON_H
-#include <Python.h>
-
-#ifdef __cplusplus
extern "C" {
-#endif
-#ifdef DOH
+#include <Python.h>
+#include "mod_python_extra.h"
}
-#endif
#include <switch_cpp.h>
-
-
-typedef enum {
- S_SWAPPED_IN = (1 << 0),
- S_SWAPPED_OUT = (1 << 1)
-} swap_state_t;
-
-void console_log(char *level_str, char *msg);
-void console_clean_log(char *msg);
-
-class PySession : public CoreSession {
+namespace PYTHON {
+class Session : public CoreSession {
private:
- void *threadState;
- int swapstate;
+ virtual void do_hangup_hook();
+ PyObject *getPython();
+ PyObject *Py;
+ PyObject *Self;
+ int hh;
+ int mark;
+ PyThreadState *TS;
public:
- PySession();
- PySession(char *uuid);
- PySession(switch_core_session_t *session);
- ~PySession();
- void setDTMFCallback(PyObject *pyfunc, char *funcargs);
- void setHangupHook(PyObject *pyfunc);
- void check_hangup_hook();
- void hangup(char *cause);
- bool begin_allow_threads();
- bool end_allow_threads();
-
- /**
- * Run DTMF callback
- *
- * A static method in CoreSession is the first thing called
- * upon receving a dtmf/event callback from fs engine, and then
- * it gets the PySession instance and calls this method with
- * dtmf/event object.
- *
- * @param input - a dtmf char buffer, or an event 'object' (not sure..)
- * @param itype - a SWITCH_INPUT_TYPE_DTMF or a SWITCH_INPUT_TYPE_EVENT
- */
- switch_status_t run_dtmf_callback(void *input,
- switch_input_type_t itype);
+ Session();
+ Session(char *uuid);
+ Session(switch_core_session_t *session);
+ virtual ~Session();
+
+ virtual bool begin_allow_threads();
+ virtual bool end_allow_threads();
+ virtual void check_hangup_hook();
+
+ virtual switch_status_t run_dtmf_callback(void *input, switch_input_type_t itype);
+ void setInputCallback(PyObject *cbfunc, PyObject *funcargs = NULL);
+ void setHangupHook(PyObject *pyfunc, PyObject *arg = NULL);
+ bool ready();
+
+ PyObject *cb_function;
+ PyObject *cb_arg;
+ PyObject *hangup_func;
+ PyObject *hangup_func_arg;
+ void setPython(PyObject *state);
+ void setSelf(PyObject *state);
};
-
-
-#ifdef __cplusplus
}
#endif
-#endif
Added: freeswitch/trunk/src/mod/languages/mod_python/hack.diff
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_python/hack.diff Fri Jul 11 15:42:52 2008
@@ -0,0 +1,53 @@
+--- mod_python_wrap.cpp 2008-07-10 13:14:21.000000000 -0500
++++ old.cpp 2008-07-10 13:13:57.000000000 -0500
+@@ -8150,20 +8150,20 @@
+ }
+
+
+-SWIGINTERN PyObject *_wrap_new_Session__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
++SWIGINTERN PyObject *_wrap_new_Session__SWIG_0(PyObject *self, PyObject *args) {
+ PyObject *resultobj = 0;
+ PYTHON::Session *result = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)":new_Session")) SWIG_fail;
+ result = (PYTHON::Session *)new PYTHON::Session();
+- resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PYTHON__Session, SWIG_POINTER_NEW | 0 );
++ resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PYTHON__Session, SWIG_POINTER_NEW | 0 ); result->setPython(self);
+ return resultobj;
+ fail:
+ return NULL;
+ }
+
+
+-SWIGINTERN PyObject *_wrap_new_Session__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
++SWIGINTERN PyObject *_wrap_new_Session__SWIG_1(PyObject *self, PyObject *args) {
+ PyObject *resultobj = 0;
+ char *arg1 = (char *) 0 ;
+ PYTHON::Session *result = 0 ;
+@@ -8179,7 +8179,7 @@
+ }
+ arg1 = reinterpret_cast< char * >(buf1);
+ result = (PYTHON::Session *)new PYTHON::Session(arg1);
+- resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PYTHON__Session, SWIG_POINTER_NEW | 0 );
++ resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PYTHON__Session, SWIG_POINTER_NEW | 0 ); result->setPython(self);
+ if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
+ return resultobj;
+ fail:
+@@ -8188,7 +8188,7 @@
+ }
+
+
+-SWIGINTERN PyObject *_wrap_new_Session__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
++SWIGINTERN PyObject *_wrap_new_Session__SWIG_2(PyObject *self, PyObject *args) {
+ PyObject *resultobj = 0;
+ switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
+ PYTHON::Session *result = 0 ;
+@@ -8203,7 +8203,7 @@
+ }
+ arg1 = reinterpret_cast< switch_core_session_t * >(argp1);
+ result = (PYTHON::Session *)new PYTHON::Session(arg1);
+- resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PYTHON__Session, SWIG_POINTER_NEW | 0 );
++ resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PYTHON__Session, SWIG_POINTER_NEW | 0 ); result->setPython(self);
+ return resultobj;
+ fail:
+ return NULL;
Modified: freeswitch/trunk/src/mod/languages/mod_python/mod_python.c
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_python/mod_python.c (original)
+++ freeswitch/trunk/src/mod/languages/mod_python/mod_python.c Fri Jul 11 15:42:52 2008
@@ -42,7 +42,7 @@
#endif
#include <switch.h>
-
+#include "mod_python_extra.h"
PyThreadState *mainThreadState = NULL;
@@ -62,7 +62,7 @@
int argc;
int lead = 0;
char *script = NULL;
- PyObject *module = NULL;
+ PyObject *module = NULL, *sp = NULL;
PyObject *function = NULL;
PyObject *arg = NULL;
PyObject *result = NULL;
@@ -139,6 +139,10 @@
PyTuple_SetItem(arg, 0, nada);
}
+ if (session) {
+ sp = mod_python_conjure_session(module, session, "session");
+ }
+
// invoke the handler
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Call python script \n");
result = PyEval_CallObjectWithKeywords(function, arg, (PyObject *) NULL);
@@ -150,21 +154,26 @@
PyErr_Print();
PyErr_Clear();
}
-
- goto done_swap_out;
-
+
done:
switch_safe_free(dupargs);
+ if (sp) {
+ Py_XDECREF(sp);
+ }
+
done_swap_out:
+
+
// decrement ref counts
Py_XDECREF(module);
Py_XDECREF(function);
Py_XDECREF(arg);
Py_XDECREF(result);
-
+
// swap out thread state
if (session) {
+ //switch_core_session_rwunlock(session);
// record the fact that thread state is swapped in
switch_channel_t *channel = switch_core_session_get_channel(session);
PyThreadState *swapin_tstate = (PyThreadState *) switch_channel_get_private(channel, "SwapInThreadState");
@@ -189,7 +198,7 @@
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "No session: Threadstate mod_python.c swap-out! \n");
PyEval_ReleaseThread(tstate);
}
-
+
switch_safe_free(dupargs);
Modified: freeswitch/trunk/src/mod/languages/mod_python/mod_python.i
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_python/mod_python.i (original)
+++ freeswitch/trunk/src/mod/languages/mod_python/mod_python.i Fri Jul 11 15:42:52 2008
@@ -26,5 +26,3 @@
%include switch_swigable_cpp.h
%include freeswitch_python.h
-
-
Added: freeswitch/trunk/src/mod/languages/mod_python/mod_python_extra.c
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_python/mod_python_extra.c Fri Jul 11 15:42:52 2008
@@ -0,0 +1,65 @@
+SWITCH_BEGIN_EXTERN_C
+
+PyObject *mod_python_conjure_event(PyObject *module, switch_event_t *event, const char *name)
+{
+ PyObject *obj;
+ Event *result = new Event(event, 0);
+
+ obj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Event, SWIG_POINTER_OWN );
+ if (module && name) {
+ PyDict_SetItem(PyModule_GetDict(module), Py_BuildValue("s", name), obj);
+ Py_DECREF(obj);
+ }
+
+ return obj;
+}
+
+
+PyObject *mod_python_conjure_stream(PyObject *module, switch_stream_handle_t *stream, const char *name)
+{
+ PyObject *obj;
+ Stream *result = new Stream(stream);
+
+ obj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Stream, SWIG_POINTER_OWN );
+
+ if (module && name) {
+ PyDict_SetItem(PyModule_GetDict(module), Py_BuildValue("s", name), obj);
+ Py_DECREF(obj);
+ }
+
+ return obj;
+}
+
+PyObject *mod_python_conjure_session(PyObject *module, switch_core_session_t *session, const char *name)
+{
+ PyObject *obj;
+
+ PYTHON::Session *result = new PYTHON::Session(session);
+ obj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PYTHON__Session, SWIG_POINTER_OWN);
+
+ result->setPython(module);
+ result->setSelf(obj);
+
+ if (module && name) {
+ PyDict_SetItem(PyModule_GetDict(module), Py_BuildValue("s", name), obj);
+ Py_DECREF(obj);
+ }
+
+ return obj;
+
+}
+
+PyObject *mod_python_conjure_DTMF(char digit, int32_t duration)
+{
+ PyObject *obj;
+
+ DTMF *result = new DTMF(digit, duration);
+ obj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_DTMF, SWIG_POINTER_OWN);
+
+ return obj;
+
+}
+
+
+
+SWITCH_END_EXTERN_C
Added: freeswitch/trunk/src/mod/languages/mod_python/mod_python_extra.h
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_python/mod_python_extra.h Fri Jul 11 15:42:52 2008
@@ -0,0 +1,11 @@
+#ifndef MOD_PYTHON_EXTRA
+#define MOD_PYTHON_EXTRA
+SWITCH_BEGIN_EXTERN_C
+
+PyObject *mod_python_conjure_event(PyObject *module, switch_event_t *event, const char *name);
+PyObject *mod_python_conjure_stream(PyObject *module, switch_stream_handle_t *stream, const char *name);
+PyObject *mod_python_conjure_session(PyObject *module, switch_core_session_t *session, const char *name);
+PyObject *mod_python_conjure_DTMF(char digit, int32_t duration);
+
+SWITCH_END_EXTERN_C
+#endif
Modified: freeswitch/trunk/src/mod/languages/mod_python/mod_python_wrap.cpp
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_python/mod_python_wrap.cpp (original)
+++ freeswitch/trunk/src/mod/languages/mod_python/mod_python_wrap.cpp Fri Jul 11 15:42:52 2008
@@ -2497,15 +2497,15 @@
#define SWIGTYPE_p_API swig_types[0]
#define SWIGTYPE_p_CoreSession swig_types[1]
-#define SWIGTYPE_p_Event swig_types[2]
-#define SWIGTYPE_p_EventConsumer swig_types[3]
-#define SWIGTYPE_p_IVRMenu swig_types[4]
-#define SWIGTYPE_p_PySession swig_types[5]
-#define SWIGTYPE_p_Stream swig_types[6]
-#define SWIGTYPE_p_char swig_types[7]
-#define SWIGTYPE_p_input_callback_state swig_types[8]
-#define SWIGTYPE_p_session_flag_t swig_types[9]
-#define SWIGTYPE_p_swap_state_t swig_types[10]
+#define SWIGTYPE_p_DTMF swig_types[2]
+#define SWIGTYPE_p_Event swig_types[3]
+#define SWIGTYPE_p_EventConsumer swig_types[4]
+#define SWIGTYPE_p_IVRMenu swig_types[5]
+#define SWIGTYPE_p_PYTHON__Session swig_types[6]
+#define SWIGTYPE_p_Stream swig_types[7]
+#define SWIGTYPE_p_char swig_types[8]
+#define SWIGTYPE_p_input_callback_state swig_types[9]
+#define SWIGTYPE_p_session_flag_t swig_types[10]
#define SWIGTYPE_p_switch_channel_state_t swig_types[11]
#define SWIGTYPE_p_switch_channel_t swig_types[12]
#define SWIGTYPE_p_switch_core_session_t swig_types[13]
@@ -2518,9 +2518,10 @@
#define SWIGTYPE_p_switch_queue_t swig_types[20]
#define SWIGTYPE_p_switch_status_t swig_types[21]
#define SWIGTYPE_p_switch_stream_handle_t swig_types[22]
-#define SWIGTYPE_p_void swig_types[23]
-static swig_type_info *swig_types[25];
-static swig_module_info swig_module = {swig_types, 24, 0, 0, 0, 0};
+#define SWIGTYPE_p_uint32_t swig_types[23]
+#define SWIGTYPE_p_void swig_types[24]
+static swig_type_info *swig_types[26];
+static swig_module_info swig_module = {swig_types, 25, 0, 0, 0, 0};
#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
@@ -2863,6 +2864,56 @@
}
+SWIGINTERN int
+SWIG_AsCharArray(PyObject * obj, char *val, size_t size)
+{
+ char* cptr = 0; size_t csize = 0; int alloc = SWIG_OLDOBJ;
+ int res = SWIG_AsCharPtrAndSize(obj, &cptr, &csize, &alloc);
+ if (SWIG_IsOK(res)) {
+ if ((csize == size + 1) && cptr && !(cptr[csize-1])) --csize;
+ if (csize <= size) {
+ if (val) {
+ if (csize) memcpy(val, cptr, csize*sizeof(char));
+ if (csize < size) memset(val + csize, 0, (size - csize)*sizeof(char));
+ }
+ if (alloc == SWIG_NEWOBJ) {
+ delete[] cptr;
+ res = SWIG_DelNewMask(res);
+ }
+ return res;
+ }
+ if (alloc == SWIG_NEWOBJ) delete[] cptr;
+ }
+ return SWIG_TypeError;
+}
+
+
+SWIGINTERN int
+SWIG_AsVal_char (PyObject * obj, char *val)
+{
+ int res = SWIG_AsCharArray(obj, val, 1);
+ if (!SWIG_IsOK(res)) {
+ long v;
+ res = SWIG_AddCast(SWIG_AsVal_long (obj, &v));
+ if (SWIG_IsOK(res)) {
+ if ((CHAR_MIN <= v) && (v <= CHAR_MAX)) {
+ if (val) *val = static_cast< char >(v);
+ } else {
+ res = SWIG_OverflowError;
+ }
+ }
+ }
+ return res;
+}
+
+
+SWIGINTERNINLINE PyObject *
+SWIG_From_char (char c)
+{
+ return SWIG_FromCharPtrAndSize(&c,1);
+}
+
+
SWIGINTERNINLINE PyObject*
SWIG_From_bool (bool value)
{
@@ -3675,6 +3726,254 @@
return SWIG_Py_Void();
}
+SWIGINTERN PyObject *_wrap_DTMF_digit_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ DTMF *arg1 = (DTMF *) 0 ;
+ char arg2 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ char val2 ;
+ int ecode2 = 0 ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OO:DTMF_digit_set",&obj0,&obj1)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_DTMF, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DTMF_digit_set" "', argument " "1"" of type '" "DTMF *""'");
+ }
+ arg1 = reinterpret_cast< DTMF * >(argp1);
+ ecode2 = SWIG_AsVal_char(obj1, &val2);
+ if (!SWIG_IsOK(ecode2)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "DTMF_digit_set" "', argument " "2"" of type '" "char""'");
+ }
+ arg2 = static_cast< char >(val2);
+ if (arg1) (arg1)->digit = arg2;
+
+ resultobj = SWIG_Py_Void();
+ return resultobj;
+fail:
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_DTMF_digit_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ DTMF *arg1 = (DTMF *) 0 ;
+ char result;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ PyObject * obj0 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"O:DTMF_digit_get",&obj0)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_DTMF, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DTMF_digit_get" "', argument " "1"" of type '" "DTMF *""'");
+ }
+ arg1 = reinterpret_cast< DTMF * >(argp1);
+ result = (char) ((arg1)->digit);
+ resultobj = SWIG_From_char(static_cast< char >(result));
+ return resultobj;
+fail:
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_DTMF_duration_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ DTMF *arg1 = (DTMF *) 0 ;
+ uint32_t arg2 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ void *argp2 ;
+ int res2 = 0 ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OO:DTMF_duration_set",&obj0,&obj1)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_DTMF, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DTMF_duration_set" "', argument " "1"" of type '" "DTMF *""'");
+ }
+ arg1 = reinterpret_cast< DTMF * >(argp1);
+ {
+ res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_uint32_t, 0 | 0);
+ if (!SWIG_IsOK(res2)) {
+ SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "DTMF_duration_set" "', argument " "2"" of type '" "uint32_t""'");
+ }
+ if (!argp2) {
+ SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "DTMF_duration_set" "', argument " "2"" of type '" "uint32_t""'");
+ } else {
+ uint32_t * temp = reinterpret_cast< uint32_t * >(argp2);
+ arg2 = *temp;
+ if (SWIG_IsNewObj(res2)) delete temp;
+ }
+ }
+ if (arg1) (arg1)->duration = arg2;
+
+ resultobj = SWIG_Py_Void();
+ return resultobj;
+fail:
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_DTMF_duration_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ DTMF *arg1 = (DTMF *) 0 ;
+ uint32_t result;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ PyObject * obj0 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"O:DTMF_duration_get",&obj0)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_DTMF, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DTMF_duration_get" "', argument " "1"" of type '" "DTMF *""'");
+ }
+ arg1 = reinterpret_cast< DTMF * >(argp1);
+ result = ((arg1)->duration);
+ resultobj = SWIG_NewPointerObj((new uint32_t(static_cast< const uint32_t& >(result))), SWIGTYPE_p_uint32_t, SWIG_POINTER_OWN | 0 );
+ return resultobj;
+fail:
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_new_DTMF__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ char arg1 ;
+ uint32_t arg2 ;
+ DTMF *result = 0 ;
+ char val1 ;
+ int ecode1 = 0 ;
+ void *argp2 ;
+ int res2 = 0 ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OO:new_DTMF",&obj0,&obj1)) SWIG_fail;
+ ecode1 = SWIG_AsVal_char(obj0, &val1);
+ if (!SWIG_IsOK(ecode1)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_DTMF" "', argument " "1"" of type '" "char""'");
+ }
+ arg1 = static_cast< char >(val1);
+ {
+ res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_uint32_t, 0 | 0);
+ if (!SWIG_IsOK(res2)) {
+ SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_DTMF" "', argument " "2"" of type '" "uint32_t""'");
+ }
+ if (!argp2) {
+ SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_DTMF" "', argument " "2"" of type '" "uint32_t""'");
+ } else {
+ uint32_t * temp = reinterpret_cast< uint32_t * >(argp2);
+ arg2 = *temp;
+ if (SWIG_IsNewObj(res2)) delete temp;
+ }
+ }
+ result = (DTMF *)new DTMF(arg1,arg2);
+ resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_DTMF, SWIG_POINTER_NEW | 0 );
+ return resultobj;
+fail:
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_new_DTMF__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ char arg1 ;
+ DTMF *result = 0 ;
+ char val1 ;
+ int ecode1 = 0 ;
+ PyObject * obj0 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"O:new_DTMF",&obj0)) SWIG_fail;
+ ecode1 = SWIG_AsVal_char(obj0, &val1);
+ if (!SWIG_IsOK(ecode1)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_DTMF" "', argument " "1"" of type '" "char""'");
+ }
+ arg1 = static_cast< char >(val1);
+ result = (DTMF *)new DTMF(arg1);
+ resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_DTMF, SWIG_POINTER_NEW | 0 );
+ return resultobj;
+fail:
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_new_DTMF(PyObject *self, PyObject *args) {
+ int argc;
+ PyObject *argv[3];
+ int ii;
+
+ if (!PyTuple_Check(args)) SWIG_fail;
+ argc = (int)PyObject_Length(args);
+ for (ii = 0; (ii < argc) && (ii < 2); ii++) {
+ argv[ii] = PyTuple_GET_ITEM(args,ii);
+ }
+ if (argc == 1) {
+ int _v;
+ {
+ int res = SWIG_AsVal_char(argv[0], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ return _wrap_new_DTMF__SWIG_1(self, args);
+ }
+ }
+ if (argc == 2) {
+ int _v;
+ {
+ int res = SWIG_AsVal_char(argv[0], NULL);
+ _v = SWIG_CheckState(res);
+ }
+ if (_v) {
+ int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_uint32_t, 0);
+ _v = SWIG_CheckState(res);
+ if (_v) {
+ return _wrap_new_DTMF__SWIG_0(self, args);
+ }
+ }
+ }
+
+fail:
+ SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'new_DTMF'.\n"
+ " Possible C/C++ prototypes are:\n"
+ " DTMF(char,uint32_t)\n"
+ " DTMF(char)\n");
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_delete_DTMF(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ DTMF *arg1 = (DTMF *) 0 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ PyObject * obj0 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"O:delete_DTMF",&obj0)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_DTMF, SWIG_POINTER_DISOWN | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_DTMF" "', argument " "1"" of type '" "DTMF *""'");
+ }
+ arg1 = reinterpret_cast< DTMF * >(argp1);
+ delete arg1;
+
+ resultobj = SWIG_Py_Void();
+ return resultobj;
+fail:
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *DTMF_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *obj;
+ if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+ SWIG_TypeNewClientData(SWIGTYPE_p_DTMF, SWIG_NewClientData(obj));
+ return SWIG_Py_Void();
+}
+
SWIGINTERN PyObject *_wrap_new_Stream__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
PyObject *resultobj = 0;
Stream *result = 0 ;
@@ -8151,36 +8450,36 @@
}
-SWIGINTERN PyObject *_wrap_new_PySession__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_new_Session__SWIG_0(PyObject *self, PyObject *args) {
PyObject *resultobj = 0;
- PySession *result = 0 ;
+ PYTHON::Session *result = 0 ;
- if (!PyArg_ParseTuple(args,(char *)":new_PySession")) SWIG_fail;
- result = (PySession *)new PySession();
- resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PySession, SWIG_POINTER_NEW | 0 );
+ if (!PyArg_ParseTuple(args,(char *)":new_Session")) SWIG_fail;
+ result = (PYTHON::Session *)new PYTHON::Session();
+ resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PYTHON__Session, SWIG_POINTER_NEW | 0 ); result->setPython(self);
return resultobj;
fail:
return NULL;
}
-SWIGINTERN PyObject *_wrap_new_PySession__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_new_Session__SWIG_1(PyObject *self, PyObject *args) {
PyObject *resultobj = 0;
char *arg1 = (char *) 0 ;
- PySession *result = 0 ;
+ PYTHON::Session *result = 0 ;
int res1 ;
char *buf1 = 0 ;
int alloc1 = 0 ;
PyObject * obj0 = 0 ;
- if (!PyArg_ParseTuple(args,(char *)"O:new_PySession",&obj0)) SWIG_fail;
+ if (!PyArg_ParseTuple(args,(char *)"O:new_Session",&obj0)) SWIG_fail;
res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1);
if (!SWIG_IsOK(res1)) {
- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_PySession" "', argument " "1"" of type '" "char *""'");
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Session" "', argument " "1"" of type '" "char *""'");
}
arg1 = reinterpret_cast< char * >(buf1);
- result = (PySession *)new PySession(arg1);
- resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PySession, SWIG_POINTER_NEW | 0 );
+ result = (PYTHON::Session *)new PYTHON::Session(arg1);
+ resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PYTHON__Session, SWIG_POINTER_NEW | 0 ); result->setPython(self);
if (alloc1 == SWIG_NEWOBJ) delete[] buf1;
return resultobj;
fail:
@@ -8189,29 +8488,29 @@
}
-SWIGINTERN PyObject *_wrap_new_PySession__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_new_Session__SWIG_2(PyObject *self, PyObject *args) {
PyObject *resultobj = 0;
switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
- PySession *result = 0 ;
+ PYTHON::Session *result = 0 ;
void *argp1 = 0 ;
int res1 = 0 ;
PyObject * obj0 = 0 ;
- if (!PyArg_ParseTuple(args,(char *)"O:new_PySession",&obj0)) SWIG_fail;
+ if (!PyArg_ParseTuple(args,(char *)"O:new_Session",&obj0)) SWIG_fail;
res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_switch_core_session_t, 0 | 0 );
if (!SWIG_IsOK(res1)) {
- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_PySession" "', argument " "1"" of type '" "switch_core_session_t *""'");
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Session" "', argument " "1"" of type '" "switch_core_session_t *""'");
}
arg1 = reinterpret_cast< switch_core_session_t * >(argp1);
- result = (PySession *)new PySession(arg1);
- resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PySession, SWIG_POINTER_NEW | 0 );
+ result = (PYTHON::Session *)new PYTHON::Session(arg1);
+ resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PYTHON__Session, SWIG_POINTER_NEW | 0 ); result->setPython(self);
return resultobj;
fail:
return NULL;
}
-SWIGINTERN PyObject *_wrap_new_PySession(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_new_Session(PyObject *self, PyObject *args) {
int argc;
PyObject *argv[2];
int ii;
@@ -8222,7 +8521,7 @@
argv[ii] = PyTuple_GET_ITEM(args,ii);
}
if (argc == 0) {
- return _wrap_new_PySession__SWIG_0(self, args);
+ return _wrap_new_Session__SWIG_0(self, args);
}
if (argc == 1) {
int _v;
@@ -8230,7 +8529,7 @@
int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_switch_core_session_t, 0);
_v = SWIG_CheckState(res);
if (_v) {
- return _wrap_new_PySession__SWIG_2(self, args);
+ return _wrap_new_Session__SWIG_2(self, args);
}
}
if (argc == 1) {
@@ -8238,33 +8537,33 @@
int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0);
_v = SWIG_CheckState(res);
if (_v) {
- return _wrap_new_PySession__SWIG_1(self, args);
+ return _wrap_new_Session__SWIG_1(self, args);
}
}
fail:
- SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'new_PySession'.\n"
+ SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'new_Session'.\n"
" Possible C/C++ prototypes are:\n"
- " PySession()\n"
- " PySession(char *)\n"
- " PySession(switch_core_session_t *)\n");
+ " PYTHON::Session()\n"
+ " PYTHON::Session(char *)\n"
+ " PYTHON::Session(switch_core_session_t *)\n");
return NULL;
}
-SWIGINTERN PyObject *_wrap_delete_PySession(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_delete_Session(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
PyObject *resultobj = 0;
- PySession *arg1 = (PySession *) 0 ;
+ PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
void *argp1 = 0 ;
int res1 = 0 ;
PyObject * obj0 = 0 ;
- if (!PyArg_ParseTuple(args,(char *)"O:delete_PySession",&obj0)) SWIG_fail;
- res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PySession, SWIG_POINTER_DISOWN | 0 );
+ if (!PyArg_ParseTuple(args,(char *)"O:delete_Session",&obj0)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PYTHON__Session, SWIG_POINTER_DISOWN | 0 );
if (!SWIG_IsOK(res1)) {
- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_PySession" "', argument " "1"" of type '" "PySession *""'");
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_Session" "', argument " "1"" of type '" "PYTHON::Session *""'");
}
- arg1 = reinterpret_cast< PySession * >(argp1);
+ arg1 = reinterpret_cast< PYTHON::Session * >(argp1);
delete arg1;
resultobj = SWIG_Py_Void();
@@ -8274,79 +8573,63 @@
}
-SWIGINTERN PyObject *_wrap_PySession_setDTMFCallback(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Session_begin_allow_threads(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
PyObject *resultobj = 0;
- PySession *arg1 = (PySession *) 0 ;
- PyObject *arg2 = (PyObject *) 0 ;
- char *arg3 = (char *) 0 ;
+ PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
+ bool result;
void *argp1 = 0 ;
int res1 = 0 ;
- int res3 ;
- char *buf3 = 0 ;
- int alloc3 = 0 ;
PyObject * obj0 = 0 ;
- PyObject * obj1 = 0 ;
- PyObject * obj2 = 0 ;
- if (!PyArg_ParseTuple(args,(char *)"OOO:PySession_setDTMFCallback",&obj0,&obj1,&obj2)) SWIG_fail;
- res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PySession, 0 | 0 );
+ if (!PyArg_ParseTuple(args,(char *)"O:Session_begin_allow_threads",&obj0)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PYTHON__Session, 0 | 0 );
if (!SWIG_IsOK(res1)) {
- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "PySession_setDTMFCallback" "', argument " "1"" of type '" "PySession *""'");
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_begin_allow_threads" "', argument " "1"" of type '" "PYTHON::Session *""'");
}
- arg1 = reinterpret_cast< PySession * >(argp1);
- arg2 = obj1;
- res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3);
- if (!SWIG_IsOK(res3)) {
- SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "PySession_setDTMFCallback" "', argument " "3"" of type '" "char *""'");
- }
- arg3 = reinterpret_cast< char * >(buf3);
- (arg1)->setDTMFCallback(arg2,arg3);
- resultobj = SWIG_Py_Void();
- if (alloc3 == SWIG_NEWOBJ) delete[] buf3;
+ arg1 = reinterpret_cast< PYTHON::Session * >(argp1);
+ result = (bool)(arg1)->begin_allow_threads();
+ resultobj = SWIG_From_bool(static_cast< bool >(result));
return resultobj;
fail:
- if (alloc3 == SWIG_NEWOBJ) delete[] buf3;
return NULL;
}
-SWIGINTERN PyObject *_wrap_PySession_setHangupHook(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Session_end_allow_threads(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
PyObject *resultobj = 0;
- PySession *arg1 = (PySession *) 0 ;
- PyObject *arg2 = (PyObject *) 0 ;
+ PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
+ bool result;
void *argp1 = 0 ;
int res1 = 0 ;
PyObject * obj0 = 0 ;
- PyObject * obj1 = 0 ;
- if (!PyArg_ParseTuple(args,(char *)"OO:PySession_setHangupHook",&obj0,&obj1)) SWIG_fail;
- res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PySession, 0 | 0 );
+ if (!PyArg_ParseTuple(args,(char *)"O:Session_end_allow_threads",&obj0)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PYTHON__Session, 0 | 0 );
if (!SWIG_IsOK(res1)) {
- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "PySession_setHangupHook" "', argument " "1"" of type '" "PySession *""'");
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_end_allow_threads" "', argument " "1"" of type '" "PYTHON::Session *""'");
}
- arg1 = reinterpret_cast< PySession * >(argp1);
- arg2 = obj1;
- (arg1)->setHangupHook(arg2);
- resultobj = SWIG_Py_Void();
+ arg1 = reinterpret_cast< PYTHON::Session * >(argp1);
+ result = (bool)(arg1)->end_allow_threads();
+ resultobj = SWIG_From_bool(static_cast< bool >(result));
return resultobj;
fail:
return NULL;
}
-SWIGINTERN PyObject *_wrap_PySession_check_hangup_hook(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Session_check_hangup_hook(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
PyObject *resultobj = 0;
- PySession *arg1 = (PySession *) 0 ;
+ PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
void *argp1 = 0 ;
int res1 = 0 ;
PyObject * obj0 = 0 ;
- if (!PyArg_ParseTuple(args,(char *)"O:PySession_check_hangup_hook",&obj0)) SWIG_fail;
- res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PySession, 0 | 0 );
+ if (!PyArg_ParseTuple(args,(char *)"O:Session_check_hangup_hook",&obj0)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PYTHON__Session, 0 | 0 );
if (!SWIG_IsOK(res1)) {
- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "PySession_check_hangup_hook" "', argument " "1"" of type '" "PySession *""'");
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_check_hangup_hook" "', argument " "1"" of type '" "PYTHON::Session *""'");
}
- arg1 = reinterpret_cast< PySession * >(argp1);
+ arg1 = reinterpret_cast< PYTHON::Session * >(argp1);
(arg1)->check_hangup_hook();
resultobj = SWIG_Py_Void();
return resultobj;
@@ -8355,133 +8638,510 @@
}
-SWIGINTERN PyObject *_wrap_PySession_hangup(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Session_run_dtmf_callback(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
PyObject *resultobj = 0;
- PySession *arg1 = (PySession *) 0 ;
- char *arg2 = (char *) 0 ;
+ PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
+ void *arg2 = (void *) 0 ;
+ switch_input_type_t arg3 ;
+ switch_status_t result;
void *argp1 = 0 ;
int res1 = 0 ;
int res2 ;
- char *buf2 = 0 ;
- int alloc2 = 0 ;
+ void *argp3 ;
+ int res3 = 0 ;
PyObject * obj0 = 0 ;
PyObject * obj1 = 0 ;
+ PyObject * obj2 = 0 ;
- if (!PyArg_ParseTuple(args,(char *)"OO:PySession_hangup",&obj0,&obj1)) SWIG_fail;
- res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PySession, 0 | 0 );
+ if (!PyArg_ParseTuple(args,(char *)"OOO:Session_run_dtmf_callback",&obj0,&obj1,&obj2)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PYTHON__Session, 0 | 0 );
if (!SWIG_IsOK(res1)) {
- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "PySession_hangup" "', argument " "1"" of type '" "PySession *""'");
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_run_dtmf_callback" "', argument " "1"" of type '" "PYTHON::Session *""'");
}
- arg1 = reinterpret_cast< PySession * >(argp1);
- res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
+ arg1 = reinterpret_cast< PYTHON::Session * >(argp1);
+ res2 = SWIG_ConvertPtr(obj1,SWIG_as_voidptrptr(&arg2), 0, 0);
if (!SWIG_IsOK(res2)) {
- SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "PySession_hangup" "', argument " "2"" of type '" "char *""'");
+ SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Session_run_dtmf_callback" "', argument " "2"" of type '" "void *""'");
}
- arg2 = reinterpret_cast< char * >(buf2);
- (arg1)->hangup(arg2);
- resultobj = SWIG_Py_Void();
- if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
+ {
+ res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_switch_input_type_t, 0 | 0);
+ if (!SWIG_IsOK(res3)) {
+ SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Session_run_dtmf_callback" "', argument " "3"" of type '" "switch_input_type_t""'");
+ }
+ if (!argp3) {
+ SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Session_run_dtmf_callback" "', argument " "3"" of type '" "switch_input_type_t""'");
+ } else {
+ switch_input_type_t * temp = reinterpret_cast< switch_input_type_t * >(argp3);
+ arg3 = *temp;
+ if (SWIG_IsNewObj(res3)) delete temp;
+ }
+ }
+ result = (arg1)->run_dtmf_callback(arg2,arg3);
+ resultobj = SWIG_NewPointerObj((new switch_status_t(static_cast< const switch_status_t& >(result))), SWIGTYPE_p_switch_status_t, SWIG_POINTER_OWN | 0 );
return resultobj;
fail:
- if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
return NULL;
}
-SWIGINTERN PyObject *_wrap_PySession_begin_allow_threads(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Session_setInputCallback__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
PyObject *resultobj = 0;
- PySession *arg1 = (PySession *) 0 ;
- bool result;
+ PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
+ PyObject *arg2 = (PyObject *) 0 ;
+ PyObject *arg3 = (PyObject *) 0 ;
void *argp1 = 0 ;
int res1 = 0 ;
PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+ PyObject * obj2 = 0 ;
- if (!PyArg_ParseTuple(args,(char *)"O:PySession_begin_allow_threads",&obj0)) SWIG_fail;
- res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PySession, 0 | 0 );
+ if (!PyArg_ParseTuple(args,(char *)"OOO:Session_setInputCallback",&obj0,&obj1,&obj2)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PYTHON__Session, 0 | 0 );
if (!SWIG_IsOK(res1)) {
- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "PySession_begin_allow_threads" "', argument " "1"" of type '" "PySession *""'");
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_setInputCallback" "', argument " "1"" of type '" "PYTHON::Session *""'");
}
- arg1 = reinterpret_cast< PySession * >(argp1);
- result = (bool)(arg1)->begin_allow_threads();
- resultobj = SWIG_From_bool(static_cast< bool >(result));
+ arg1 = reinterpret_cast< PYTHON::Session * >(argp1);
+ arg2 = obj1;
+ arg3 = obj2;
+ (arg1)->setInputCallback(arg2,arg3);
+ resultobj = SWIG_Py_Void();
return resultobj;
fail:
return NULL;
}
-SWIGINTERN PyObject *_wrap_PySession_end_allow_threads(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Session_setInputCallback__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
PyObject *resultobj = 0;
- PySession *arg1 = (PySession *) 0 ;
- bool result;
+ PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
+ PyObject *arg2 = (PyObject *) 0 ;
void *argp1 = 0 ;
int res1 = 0 ;
PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
- if (!PyArg_ParseTuple(args,(char *)"O:PySession_end_allow_threads",&obj0)) SWIG_fail;
- res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PySession, 0 | 0 );
+ if (!PyArg_ParseTuple(args,(char *)"OO:Session_setInputCallback",&obj0,&obj1)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PYTHON__Session, 0 | 0 );
if (!SWIG_IsOK(res1)) {
- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "PySession_end_allow_threads" "', argument " "1"" of type '" "PySession *""'");
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_setInputCallback" "', argument " "1"" of type '" "PYTHON::Session *""'");
}
- arg1 = reinterpret_cast< PySession * >(argp1);
- result = (bool)(arg1)->end_allow_threads();
- resultobj = SWIG_From_bool(static_cast< bool >(result));
+ arg1 = reinterpret_cast< PYTHON::Session * >(argp1);
+ arg2 = obj1;
+ (arg1)->setInputCallback(arg2);
+ resultobj = SWIG_Py_Void();
return resultobj;
fail:
return NULL;
}
-SWIGINTERN PyObject *_wrap_PySession_run_dtmf_callback(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
- PyObject *resultobj = 0;
- PySession *arg1 = (PySession *) 0 ;
- void *arg2 = (void *) 0 ;
- switch_input_type_t arg3 ;
- switch_status_t result;
+SWIGINTERN PyObject *_wrap_Session_setInputCallback(PyObject *self, PyObject *args) {
+ int argc;
+ PyObject *argv[4];
+ int ii;
+
+ if (!PyTuple_Check(args)) SWIG_fail;
+ argc = (int)PyObject_Length(args);
+ for (ii = 0; (ii < argc) && (ii < 3); ii++) {
+ argv[ii] = PyTuple_GET_ITEM(args,ii);
+ }
+ if (argc == 2) {
+ int _v;
+ void *vptr = 0;
+ int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_PYTHON__Session, 0);
+ _v = SWIG_CheckState(res);
+ if (_v) {
+ _v = (argv[1] != 0);
+ if (_v) {
+ return _wrap_Session_setInputCallback__SWIG_1(self, args);
+ }
+ }
+ }
+ if (argc == 3) {
+ int _v;
+ void *vptr = 0;
+ int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_PYTHON__Session, 0);
+ _v = SWIG_CheckState(res);
+ if (_v) {
+ _v = (argv[1] != 0);
+ if (_v) {
+ _v = (argv[2] != 0);
+ if (_v) {
+ return _wrap_Session_setInputCallback__SWIG_0(self, args);
+ }
+ }
+ }
+ }
+
+fail:
+ SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'Session_setInputCallback'.\n"
+ " Possible C/C++ prototypes are:\n"
+ " setInputCallback(PYTHON::Session *,PyObject *,PyObject *)\n"
+ " setInputCallback(PYTHON::Session *,PyObject *)\n");
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_Session_setHangupHook__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
+ PyObject *arg2 = (PyObject *) 0 ;
+ PyObject *arg3 = (PyObject *) 0 ;
void *argp1 = 0 ;
int res1 = 0 ;
- int res2 ;
- void *argp3 ;
- int res3 = 0 ;
PyObject * obj0 = 0 ;
PyObject * obj1 = 0 ;
PyObject * obj2 = 0 ;
- if (!PyArg_ParseTuple(args,(char *)"OOO:PySession_run_dtmf_callback",&obj0,&obj1,&obj2)) SWIG_fail;
- res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PySession, 0 | 0 );
+ if (!PyArg_ParseTuple(args,(char *)"OOO:Session_setHangupHook",&obj0,&obj1,&obj2)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PYTHON__Session, 0 | 0 );
if (!SWIG_IsOK(res1)) {
- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "PySession_run_dtmf_callback" "', argument " "1"" of type '" "PySession *""'");
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_setHangupHook" "', argument " "1"" of type '" "PYTHON::Session *""'");
}
- arg1 = reinterpret_cast< PySession * >(argp1);
- res2 = SWIG_ConvertPtr(obj1,SWIG_as_voidptrptr(&arg2), 0, 0);
- if (!SWIG_IsOK(res2)) {
- SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "PySession_run_dtmf_callback" "', argument " "2"" of type '" "void *""'");
+ arg1 = reinterpret_cast< PYTHON::Session * >(argp1);
+ arg2 = obj1;
+ arg3 = obj2;
+ (arg1)->setHangupHook(arg2,arg3);
+ resultobj = SWIG_Py_Void();
+ return resultobj;
+fail:
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_Session_setHangupHook__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
+ PyObject *arg2 = (PyObject *) 0 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OO:Session_setHangupHook",&obj0,&obj1)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PYTHON__Session, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_setHangupHook" "', argument " "1"" of type '" "PYTHON::Session *""'");
}
- {
- res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_switch_input_type_t, 0 | 0);
- if (!SWIG_IsOK(res3)) {
- SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "PySession_run_dtmf_callback" "', argument " "3"" of type '" "switch_input_type_t""'");
- }
- if (!argp3) {
- SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "PySession_run_dtmf_callback" "', argument " "3"" of type '" "switch_input_type_t""'");
- } else {
- switch_input_type_t * temp = reinterpret_cast< switch_input_type_t * >(argp3);
- arg3 = *temp;
- if (SWIG_IsNewObj(res3)) delete temp;
+ arg1 = reinterpret_cast< PYTHON::Session * >(argp1);
+ arg2 = obj1;
+ (arg1)->setHangupHook(arg2);
+ resultobj = SWIG_Py_Void();
+ return resultobj;
+fail:
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_Session_setHangupHook(PyObject *self, PyObject *args) {
+ int argc;
+ PyObject *argv[4];
+ int ii;
+
+ if (!PyTuple_Check(args)) SWIG_fail;
+ argc = (int)PyObject_Length(args);
+ for (ii = 0; (ii < argc) && (ii < 3); ii++) {
+ argv[ii] = PyTuple_GET_ITEM(args,ii);
+ }
+ if (argc == 2) {
+ int _v;
+ void *vptr = 0;
+ int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_PYTHON__Session, 0);
+ _v = SWIG_CheckState(res);
+ if (_v) {
+ _v = (argv[1] != 0);
+ if (_v) {
+ return _wrap_Session_setHangupHook__SWIG_1(self, args);
+ }
}
}
- result = (arg1)->run_dtmf_callback(arg2,arg3);
- resultobj = SWIG_NewPointerObj((new switch_status_t(static_cast< const switch_status_t& >(result))), SWIGTYPE_p_switch_status_t, SWIG_POINTER_OWN | 0 );
+ if (argc == 3) {
+ int _v;
+ void *vptr = 0;
+ int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_PYTHON__Session, 0);
+ _v = SWIG_CheckState(res);
+ if (_v) {
+ _v = (argv[1] != 0);
+ if (_v) {
+ _v = (argv[2] != 0);
+ if (_v) {
+ return _wrap_Session_setHangupHook__SWIG_0(self, args);
+ }
+ }
+ }
+ }
+
+fail:
+ SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'Session_setHangupHook'.\n"
+ " Possible C/C++ prototypes are:\n"
+ " setHangupHook(PYTHON::Session *,PyObject *,PyObject *)\n"
+ " setHangupHook(PYTHON::Session *,PyObject *)\n");
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_Session_ready(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
+ bool result;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ PyObject * obj0 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"O:Session_ready",&obj0)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PYTHON__Session, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_ready" "', argument " "1"" of type '" "PYTHON::Session *""'");
+ }
+ arg1 = reinterpret_cast< PYTHON::Session * >(argp1);
+ result = (bool)(arg1)->ready();
+ resultobj = SWIG_From_bool(static_cast< bool >(result));
+ return resultobj;
+fail:
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_Session_cb_function_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
+ PyObject *arg2 = (PyObject *) 0 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OO:Session_cb_function_set",&obj0,&obj1)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PYTHON__Session, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_cb_function_set" "', argument " "1"" of type '" "PYTHON::Session *""'");
+ }
+ arg1 = reinterpret_cast< PYTHON::Session * >(argp1);
+ arg2 = obj1;
+ if (arg1) (arg1)->cb_function = arg2;
+
+ resultobj = SWIG_Py_Void();
+ return resultobj;
+fail:
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_Session_cb_function_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
+ PyObject *result = 0 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ PyObject * obj0 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"O:Session_cb_function_get",&obj0)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PYTHON__Session, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_cb_function_get" "', argument " "1"" of type '" "PYTHON::Session *""'");
+ }
+ arg1 = reinterpret_cast< PYTHON::Session * >(argp1);
+ result = (PyObject *) ((arg1)->cb_function);
+ resultobj = result;
+ return resultobj;
+fail:
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_Session_cb_arg_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
+ PyObject *arg2 = (PyObject *) 0 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OO:Session_cb_arg_set",&obj0,&obj1)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PYTHON__Session, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_cb_arg_set" "', argument " "1"" of type '" "PYTHON::Session *""'");
+ }
+ arg1 = reinterpret_cast< PYTHON::Session * >(argp1);
+ arg2 = obj1;
+ if (arg1) (arg1)->cb_arg = arg2;
+
+ resultobj = SWIG_Py_Void();
+ return resultobj;
+fail:
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_Session_cb_arg_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
+ PyObject *result = 0 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ PyObject * obj0 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"O:Session_cb_arg_get",&obj0)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PYTHON__Session, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_cb_arg_get" "', argument " "1"" of type '" "PYTHON::Session *""'");
+ }
+ arg1 = reinterpret_cast< PYTHON::Session * >(argp1);
+ result = (PyObject *) ((arg1)->cb_arg);
+ resultobj = result;
+ return resultobj;
+fail:
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_Session_hangup_func_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
+ PyObject *arg2 = (PyObject *) 0 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OO:Session_hangup_func_set",&obj0,&obj1)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PYTHON__Session, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_hangup_func_set" "', argument " "1"" of type '" "PYTHON::Session *""'");
+ }
+ arg1 = reinterpret_cast< PYTHON::Session * >(argp1);
+ arg2 = obj1;
+ if (arg1) (arg1)->hangup_func = arg2;
+
+ resultobj = SWIG_Py_Void();
+ return resultobj;
+fail:
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_Session_hangup_func_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
+ PyObject *result = 0 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ PyObject * obj0 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"O:Session_hangup_func_get",&obj0)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PYTHON__Session, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_hangup_func_get" "', argument " "1"" of type '" "PYTHON::Session *""'");
+ }
+ arg1 = reinterpret_cast< PYTHON::Session * >(argp1);
+ result = (PyObject *) ((arg1)->hangup_func);
+ resultobj = result;
+ return resultobj;
+fail:
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_Session_hangup_func_arg_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
+ PyObject *arg2 = (PyObject *) 0 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OO:Session_hangup_func_arg_set",&obj0,&obj1)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PYTHON__Session, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_hangup_func_arg_set" "', argument " "1"" of type '" "PYTHON::Session *""'");
+ }
+ arg1 = reinterpret_cast< PYTHON::Session * >(argp1);
+ arg2 = obj1;
+ if (arg1) (arg1)->hangup_func_arg = arg2;
+
+ resultobj = SWIG_Py_Void();
+ return resultobj;
+fail:
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_Session_hangup_func_arg_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
+ PyObject *result = 0 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ PyObject * obj0 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"O:Session_hangup_func_arg_get",&obj0)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PYTHON__Session, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_hangup_func_arg_get" "', argument " "1"" of type '" "PYTHON::Session *""'");
+ }
+ arg1 = reinterpret_cast< PYTHON::Session * >(argp1);
+ result = (PyObject *) ((arg1)->hangup_func_arg);
+ resultobj = result;
+ return resultobj;
+fail:
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_Session_setPython(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
+ PyObject *arg2 = (PyObject *) 0 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OO:Session_setPython",&obj0,&obj1)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PYTHON__Session, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_setPython" "', argument " "1"" of type '" "PYTHON::Session *""'");
+ }
+ arg1 = reinterpret_cast< PYTHON::Session * >(argp1);
+ arg2 = obj1;
+ (arg1)->setPython(arg2);
+ resultobj = SWIG_Py_Void();
+ return resultobj;
+fail:
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_Session_setSelf(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
+ PyObject *arg2 = (PyObject *) 0 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OO:Session_setSelf",&obj0,&obj1)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PYTHON__Session, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_setSelf" "', argument " "1"" of type '" "PYTHON::Session *""'");
+ }
+ arg1 = reinterpret_cast< PYTHON::Session * >(argp1);
+ arg2 = obj1;
+ (arg1)->setSelf(arg2);
+ resultobj = SWIG_Py_Void();
return resultobj;
fail:
return NULL;
}
-SWIGINTERN PyObject *PySession_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *Session_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
PyObject *obj;
if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
- SWIG_TypeNewClientData(SWIGTYPE_p_PySession, SWIG_NewClientData(obj));
+ SWIG_TypeNewClientData(SWIGTYPE_p_PYTHON__Session, SWIG_NewClientData(obj));
return SWIG_Py_Void();
}
@@ -8509,6 +9169,13 @@
{ (char *)"new_input_callback_state_t", _wrap_new_input_callback_state_t, METH_VARARGS, NULL},
{ (char *)"delete_input_callback_state_t", _wrap_delete_input_callback_state_t, METH_VARARGS, NULL},
{ (char *)"input_callback_state_t_swigregister", input_callback_state_t_swigregister, METH_VARARGS, NULL},
+ { (char *)"DTMF_digit_set", _wrap_DTMF_digit_set, METH_VARARGS, NULL},
+ { (char *)"DTMF_digit_get", _wrap_DTMF_digit_get, METH_VARARGS, NULL},
+ { (char *)"DTMF_duration_set", _wrap_DTMF_duration_set, METH_VARARGS, NULL},
+ { (char *)"DTMF_duration_get", _wrap_DTMF_duration_get, METH_VARARGS, NULL},
+ { (char *)"new_DTMF", _wrap_new_DTMF, METH_VARARGS, NULL},
+ { (char *)"delete_DTMF", _wrap_delete_DTMF, METH_VARARGS, NULL},
+ { (char *)"DTMF_swigregister", DTMF_swigregister, METH_VARARGS, NULL},
{ (char *)"new_Stream", _wrap_new_Stream, METH_VARARGS, NULL},
{ (char *)"delete_Stream", _wrap_delete_Stream, METH_VARARGS, NULL},
{ (char *)"Stream_write", _wrap_Stream_write, METH_VARARGS, NULL},
@@ -8608,36 +9275,46 @@
{ (char *)"bridge", _wrap_bridge, METH_VARARGS, NULL},
{ (char *)"hanguphook", _wrap_hanguphook, METH_VARARGS, NULL},
{ (char *)"dtmf_callback", _wrap_dtmf_callback, METH_VARARGS, NULL},
- { (char *)"new_PySession", _wrap_new_PySession, METH_VARARGS, NULL},
- { (char *)"delete_PySession", _wrap_delete_PySession, METH_VARARGS, NULL},
- { (char *)"PySession_setDTMFCallback", _wrap_PySession_setDTMFCallback, METH_VARARGS, NULL},
- { (char *)"PySession_setHangupHook", _wrap_PySession_setHangupHook, METH_VARARGS, NULL},
- { (char *)"PySession_check_hangup_hook", _wrap_PySession_check_hangup_hook, METH_VARARGS, NULL},
- { (char *)"PySession_hangup", _wrap_PySession_hangup, METH_VARARGS, NULL},
- { (char *)"PySession_begin_allow_threads", _wrap_PySession_begin_allow_threads, METH_VARARGS, NULL},
- { (char *)"PySession_end_allow_threads", _wrap_PySession_end_allow_threads, METH_VARARGS, NULL},
- { (char *)"PySession_run_dtmf_callback", _wrap_PySession_run_dtmf_callback, METH_VARARGS, NULL},
- { (char *)"PySession_swigregister", PySession_swigregister, METH_VARARGS, NULL},
+ { (char *)"new_Session", _wrap_new_Session, METH_VARARGS, NULL},
+ { (char *)"delete_Session", _wrap_delete_Session, METH_VARARGS, NULL},
+ { (char *)"Session_begin_allow_threads", _wrap_Session_begin_allow_threads, METH_VARARGS, NULL},
+ { (char *)"Session_end_allow_threads", _wrap_Session_end_allow_threads, METH_VARARGS, NULL},
+ { (char *)"Session_check_hangup_hook", _wrap_Session_check_hangup_hook, METH_VARARGS, NULL},
+ { (char *)"Session_run_dtmf_callback", _wrap_Session_run_dtmf_callback, METH_VARARGS, NULL},
+ { (char *)"Session_setInputCallback", _wrap_Session_setInputCallback, METH_VARARGS, NULL},
+ { (char *)"Session_setHangupHook", _wrap_Session_setHangupHook, METH_VARARGS, NULL},
+ { (char *)"Session_ready", _wrap_Session_ready, METH_VARARGS, NULL},
+ { (char *)"Session_cb_function_set", _wrap_Session_cb_function_set, METH_VARARGS, NULL},
+ { (char *)"Session_cb_function_get", _wrap_Session_cb_function_get, METH_VARARGS, NULL},
+ { (char *)"Session_cb_arg_set", _wrap_Session_cb_arg_set, METH_VARARGS, NULL},
+ { (char *)"Session_cb_arg_get", _wrap_Session_cb_arg_get, METH_VARARGS, NULL},
+ { (char *)"Session_hangup_func_set", _wrap_Session_hangup_func_set, METH_VARARGS, NULL},
+ { (char *)"Session_hangup_func_get", _wrap_Session_hangup_func_get, METH_VARARGS, NULL},
+ { (char *)"Session_hangup_func_arg_set", _wrap_Session_hangup_func_arg_set, METH_VARARGS, NULL},
+ { (char *)"Session_hangup_func_arg_get", _wrap_Session_hangup_func_arg_get, METH_VARARGS, NULL},
+ { (char *)"Session_setPython", _wrap_Session_setPython, METH_VARARGS, NULL},
+ { (char *)"Session_setSelf", _wrap_Session_setSelf, METH_VARARGS, NULL},
+ { (char *)"Session_swigregister", Session_swigregister, METH_VARARGS, NULL},
{ NULL, NULL, 0, NULL }
};
/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
-static void *_p_PySessionTo_p_CoreSession(void *x, int *newmemory) {
- return (void *)((CoreSession *) ((PySession *) x));
+static void *_p_PYTHON__SessionTo_p_CoreSession(void *x, int *newmemory) {
+ return (void *)((CoreSession *) ((PYTHON::Session *) x));
}
static swig_type_info _swigt__p_API = {"_p_API", "API *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_CoreSession = {"_p_CoreSession", "CoreSession *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_DTMF = {"_p_DTMF", "DTMF *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Event = {"_p_Event", "Event *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_EventConsumer = {"_p_EventConsumer", "EventConsumer *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_IVRMenu = {"_p_IVRMenu", "IVRMenu *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_PySession = {"_p_PySession", "PySession *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_PYTHON__Session = {"_p_PYTHON__Session", "PYTHON::Session *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_Stream = {"_p_Stream", "Stream *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_input_callback_state = {"_p_input_callback_state", "input_callback_state_t *|input_callback_state *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_session_flag_t = {"_p_session_flag_t", "enum session_flag_t *|session_flag_t *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_swap_state_t = {"_p_swap_state_t", "enum swap_state_t *|swap_state_t *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_switch_channel_state_t = {"_p_switch_channel_state_t", "switch_channel_state_t *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_switch_channel_t = {"_p_switch_channel_t", "switch_channel_t *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_switch_core_session_t = {"_p_switch_core_session_t", "switch_core_session_t *", 0, 0, (void*)0, 0};
@@ -8650,20 +9327,21 @@
static swig_type_info _swigt__p_switch_queue_t = {"_p_switch_queue_t", "switch_queue_t *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_switch_status_t = {"_p_switch_status_t", "switch_status_t *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_switch_stream_handle_t = {"_p_switch_stream_handle_t", "switch_stream_handle_t *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_uint32_t = {"_p_uint32_t", "uint32_t *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_void = {"_p_void", "void *", 0, 0, (void*)0, 0};
static swig_type_info *swig_type_initial[] = {
&_swigt__p_API,
&_swigt__p_CoreSession,
+ &_swigt__p_DTMF,
&_swigt__p_Event,
&_swigt__p_EventConsumer,
&_swigt__p_IVRMenu,
- &_swigt__p_PySession,
+ &_swigt__p_PYTHON__Session,
&_swigt__p_Stream,
&_swigt__p_char,
&_swigt__p_input_callback_state,
&_swigt__p_session_flag_t,
- &_swigt__p_swap_state_t,
&_swigt__p_switch_channel_state_t,
&_swigt__p_switch_channel_t,
&_swigt__p_switch_core_session_t,
@@ -8676,20 +9354,21 @@
&_swigt__p_switch_queue_t,
&_swigt__p_switch_status_t,
&_swigt__p_switch_stream_handle_t,
+ &_swigt__p_uint32_t,
&_swigt__p_void,
};
static swig_cast_info _swigc__p_API[] = { {&_swigt__p_API, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_CoreSession[] = { {&_swigt__p_CoreSession, 0, 0, 0}, {&_swigt__p_PySession, _p_PySessionTo_p_CoreSession, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_CoreSession[] = { {&_swigt__p_CoreSession, 0, 0, 0}, {&_swigt__p_PYTHON__Session, _p_PYTHON__SessionTo_p_CoreSession, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_DTMF[] = { {&_swigt__p_DTMF, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Event[] = { {&_swigt__p_Event, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_EventConsumer[] = { {&_swigt__p_EventConsumer, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_IVRMenu[] = { {&_swigt__p_IVRMenu, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_PySession[] = { {&_swigt__p_PySession, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_PYTHON__Session[] = { {&_swigt__p_PYTHON__Session, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_Stream[] = { {&_swigt__p_Stream, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_char[] = { {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_input_callback_state[] = { {&_swigt__p_input_callback_state, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_session_flag_t[] = { {&_swigt__p_session_flag_t, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_swap_state_t[] = { {&_swigt__p_swap_state_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_switch_channel_state_t[] = { {&_swigt__p_switch_channel_state_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_switch_channel_t[] = { {&_swigt__p_switch_channel_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_switch_core_session_t[] = { {&_swigt__p_switch_core_session_t, 0, 0, 0},{0, 0, 0, 0}};
@@ -8702,20 +9381,21 @@
static swig_cast_info _swigc__p_switch_queue_t[] = { {&_swigt__p_switch_queue_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_switch_status_t[] = { {&_swigt__p_switch_status_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_switch_stream_handle_t[] = { {&_swigt__p_switch_stream_handle_t, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_uint32_t[] = { {&_swigt__p_uint32_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_void[] = { {&_swigt__p_void, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info *swig_cast_initial[] = {
_swigc__p_API,
_swigc__p_CoreSession,
+ _swigc__p_DTMF,
_swigc__p_Event,
_swigc__p_EventConsumer,
_swigc__p_IVRMenu,
- _swigc__p_PySession,
+ _swigc__p_PYTHON__Session,
_swigc__p_Stream,
_swigc__p_char,
_swigc__p_input_callback_state,
_swigc__p_session_flag_t,
- _swigc__p_swap_state_t,
_swigc__p_switch_channel_state_t,
_swigc__p_switch_channel_t,
_swigc__p_switch_core_session_t,
@@ -8728,6 +9408,7 @@
_swigc__p_switch_queue_t,
_swigc__p_switch_status_t,
_swigc__p_switch_stream_handle_t,
+ _swigc__p_uint32_t,
_swigc__p_void,
};
@@ -9261,7 +9942,6 @@
SWIG_Python_SetConstant(d, "S_HUP",SWIG_From_int(static_cast< int >(S_HUP)));
SWIG_Python_SetConstant(d, "S_FREE",SWIG_From_int(static_cast< int >(S_FREE)));
SWIG_Python_SetConstant(d, "S_RDLOCK",SWIG_From_int(static_cast< int >(S_RDLOCK)));
- SWIG_Python_SetConstant(d, "S_SWAPPED_IN",SWIG_From_int(static_cast< int >(S_SWAPPED_IN)));
- SWIG_Python_SetConstant(d, "S_SWAPPED_OUT",SWIG_From_int(static_cast< int >(S_SWAPPED_OUT)));
}
+#include "mod_python_extra.c"
Modified: freeswitch/trunk/src/switch_cpp.cpp
==============================================================================
--- freeswitch/trunk/src/switch_cpp.cpp (original)
+++ freeswitch/trunk/src/switch_cpp.cpp Fri Jul 11 15:42:52 2008
@@ -367,6 +367,24 @@
return (char *) "invalid";
}
+
+SWITCH_DECLARE_CONSTRUCTOR DTMF::DTMF(char idigit, uint32_t iduration)
+{
+ digit = idigit;
+
+ if (iduration == 0) {
+ iduration == SWITCH_DEFAULT_DTMF_DURATION;
+ }
+
+ duration = iduration;
+}
+
+SWITCH_DECLARE_CONSTRUCTOR DTMF::~DTMF()
+{
+
+}
+
+
SWITCH_DECLARE_CONSTRUCTOR Stream::Stream()
{
SWITCH_STANDARD_STREAM(mystream);
@@ -457,8 +475,6 @@
}
switch_core_session_rwunlock(session);
}
-
-
}
SWITCH_DECLARE(char *) CoreSession::getXMLCDR()
@@ -602,11 +618,6 @@
this_check(-1);
sanity_check(-1);
- // create and store an empty filehandle in callback args
- // to workaround a bug in the presumptuous process_callback_result()
- switch_file_handle_t fh = { 0 };
- store_file_handle(&fh);
-
if (!tts_name) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No TTS engine specified\n");
return SWITCH_STATUS_FALSE;
@@ -793,13 +804,12 @@
}
}
-
- store_file_handle(&local_fh);
-
begin_allow_threads();
status = switch_ivr_play_file(session, fhp, file, ap);
end_allow_threads();
+ fhp = NULL;
+
return status == SWITCH_STATUS_SUCCESS ? 1 : 0;
}
@@ -895,18 +905,22 @@
SWITCH_DECLARE(int) CoreSession::recordFile(char *file_name, int max_len, int silence_threshold, int silence_secs)
{
- switch_file_handle_t fh = { 0 };
switch_status_t status;
this_check(-1);
sanity_check(-1);
- fh.thresh = silence_threshold;
- fh.silence_hits = silence_secs;
- store_file_handle(&fh);
+ memset(&local_fh, 0, sizeof(local_fh));
+ fhp = &local_fh;
+ local_fh.thresh = silence_threshold;
+ local_fh.silence_hits = silence_secs;
+
begin_allow_threads();
- status = switch_ivr_record_file(session, &fh, file_name, &args, max_len);
+ status = switch_ivr_record_file(session, &local_fh, file_name, &args, max_len);
end_allow_threads();
+
+ fhp = NULL;
+
return status == SWITCH_STATUS_SUCCESS ? 1 : 0;
}
@@ -1012,22 +1026,6 @@
switch_core_event_hook_add_state_change(session, hanguphook);
}
-/** \brief Store a file handle in the callback args
- *
- * In a few of the methods like playFile and streamfile,
- * an empty switch_file_handle_t is created and passed
- * to core, and stored in callback args so that the callback
- * handler can retrieve it for pausing, ff, rewinding file ptr.
- *
- * \param fh - a switch_file_handle_t
- */
-void CoreSession::store_file_handle(switch_file_handle_t *fh) {
- cb_state.extra = fh; // set a file handle so callback handler can pause
- args.buf = &cb_state;
- ap = &args;
-}
-
-
/* ---- methods not bound to CoreSession instance ---- */
SWITCH_DECLARE(void) consoleLog(char *level_str, char *msg)
@@ -1137,13 +1135,6 @@
if (fhp) {
fh = fhp;
- } else {
- if (!cb_state.extra) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Process callback result aborted because cb_state.extra is null\n");
- return SWITCH_STATUS_FALSE;
- }
-
- fh = (switch_file_handle_t *) cb_state.extra;
}
More information about the Freeswitch-svn
mailing list