[Freeswitch-svn] [commit] r5755 - in freeswitch/trunk: . build build/config conf src/mod/languages/mod_java src/mod/languages/mod_java/src src/mod/languages/mod_java/src/org src/mod/languages/mod_java/src/org/freeswitch src/mod/languages/mod_java/src/org/freeswitch/swig
Freeswitch SVN
mikej at freeswitch.org
Tue Sep 25 09:21:18 EDT 2007
Author: mikej
Date: Tue Sep 25 09:21:17 2007
New Revision: 5755
Added:
freeswitch/trunk/build/config/ax_check_java.m4
freeswitch/trunk/conf/java.conf.xml
freeswitch/trunk/src/mod/languages/mod_java/Makefile.in
freeswitch/trunk/src/mod/languages/mod_java/freeswitch_java.cpp
freeswitch/trunk/src/mod/languages/mod_java/freeswitch_java.h
freeswitch/trunk/src/mod/languages/mod_java/mod_java.c
freeswitch/trunk/src/mod/languages/mod_java/mod_java.i
freeswitch/trunk/src/mod/languages/mod_java/src/
freeswitch/trunk/src/mod/languages/mod_java/src/org/
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/DTMFCallback.java
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/Event.java
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/FreeswitchScript.java
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/HangupHook.java
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/Launcher.java
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/CoreSession.java
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/JavaSession.java
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_JavaVM.java
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_channel_state_t.java
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_channel_t.java
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_core_session_t.java
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_input_args_t.java
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_input_type_t.java
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_status_t.java
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_void.java
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitch.java
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/input_callback_state_t.java
freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/session_flag_t.java
freeswitch/trunk/src/mod/languages/mod_java/switch_swig_wrap.cpp
Modified:
freeswitch/trunk/acinclude.m4
freeswitch/trunk/build/modules.conf.in
freeswitch/trunk/conf/freeswitch.xml
freeswitch/trunk/conf/modules.conf.xml
freeswitch/trunk/configure.in
Log:
initial import of mod_java from Damjan Jovanovic
Modified: freeswitch/trunk/acinclude.m4
==============================================================================
--- freeswitch/trunk/acinclude.m4 (original)
+++ freeswitch/trunk/acinclude.m4 Tue Sep 25 09:21:17 2007
@@ -5,5 +5,6 @@
m4_include([build/config/ac_gcc_archflag.m4])
m4_include([build/config/ac_gcc_x86_cpuid.m4])
m4_include([build/config/ax_lib_mysql.m4])
+m4_include([build/config/ax_check_java.m4])
m4_include([libs/apr/build/apr_common.m4])
m4_include([build/config/libcurl.m4])
Added: freeswitch/trunk/build/config/ax_check_java.m4
==============================================================================
--- (empty file)
+++ freeswitch/trunk/build/config/ax_check_java.m4 Tue Sep 25 09:21:17 2007
@@ -0,0 +1,153 @@
+
+dnl Usage:
+dnl AX_CHECK_JAVA
+dnl Test for java, and defines
+dnl - JAVA_CFLAGS (compiler flags)
+dnl - LIB_JAVA (linker flags, stripping and path)
+dnl prerequisites:
+
+AC_DEFUN([AX_CHECK_JAVA],
+[
+AC_ARG_WITH([java],
+ AC_HELP_STRING([ --with-java=PFX], [prefix where 'java' is installed.]),
+ [with_java_prefix=$withval],
+ [with_java_prefix=${JAVA_INSTALL_PATH:-/usr/java/j2sdk1.4.1_01}])
+have_java='no'
+LIB_JAVA=''
+JAVA_FLAGS=''
+JAVA_HOME=''
+if test "x$with_java" != 'xno'
+then
+ AC_MSG_CHECKING([for JAVA installation at ${with_java}])
+ AC_MSG_RESULT()
+
+dnl these two lines should let u find most java installations
+ java_dirs="/usr /usr/local /usr/lib/j2sdk1.4-sun /usr/lib/jvm/java /System/Library/Frameworks/JavaVM.framework/Versions/Current /opt /mingw"
+ java_inc_dirs="include include/libgcj Headers"
+
+ if test "x$with_java" != 'x'
+ then
+ if test -d "$with_java"
+ then
+ JAVA_HOME="$with_java"
+ for j in $java_inc_dirs
+ do
+ echo "configure: __oline__: checking $JAVA_HOME/$j" >&AC_FD_CC
+ if test -r "$JAVA_HOME/$j/jni.h"; then
+ echo "taking that" >&AC_FD_CC
+ java_inc_dir="$j"
+ break 2
+ fi
+ done
+ else
+ AC_MSG_WARN([Sorry, $with_java does not exist, checking usual places])
+ with_java=''
+ fi
+ fi
+
+dnl now find the java dirs
+
+ if test "x$JAVA_HOME" = 'x'
+ then
+ for i in $java_dirs;
+ do
+ for j in $java_inc_dirs
+ do
+ echo "configure: __oline__: checking $i/$j" >&AC_FD_CC
+ if test -r "$i/$j/jni.h"; then
+ echo "taking that" >&AC_FD_CC
+ JAVA_HOME="$i"
+ java_inc_dir="$j"
+ break
+ fi
+ done
+ done
+ if test "x$JAVA_HOME" != 'x'
+ then
+ AC_MSG_NOTICE([java home set to $JAVA_HOME])
+ else
+ AC_MSG_NOTICE([cannot find the java directory, assuming it is specified in CFLAGS])
+ fi
+ fi
+
+
+
+ failed=0;
+ passed=0;
+ JAVA_OLD_CPPFLAGS=$CPPFLAGS
+ case "${host_os}" in
+ linux*)
+ java_extra_inc=linux
+ ;;
+ darwin*)
+ java_extra_inc=darwin
+ ;;
+ *mingw32*)
+ java_extra_inc=win32
+ ;;
+ *cygwin*)
+ java_extra_inc=win32
+ ;;
+ esac
+dnl Check if extra inc is required
+ CPPFLAGS="$CPPFLAGS -I$JAVA_HOME/$java_inc_dir"
+ AC_LANG_SAVE
+ AC_LANG_C
+ AC_COMPILE_IFELSE(
+ AC_LANG_SOURCE(
+ [[#include <jni.h>]]
+ ),
+ passed=`expr $passed + 1`,failed=`expr $failed + 1`
+ )
+ AC_LANG_RESTORE
+ CPPFLAGS="$JAVA_OLD_CPPFLAGS"
+ JAVA_FLAGS="-I$JAVA_HOME/$java_inc_dir -DHasJava"
+
+ if test $failed -gt 0
+ then
+ echo "configure: __oline__: checking if extra_inc required" >&AC_FD_CC
+ failed=0;
+ CPPFLAGS="$CPPFLAGS -I$JAVA_HOME/$java_inc_dir -I$JAVA_HOME/$java_inc_dir/$java_extra_inc"
+ AC_LANG_SAVE
+ AC_LANG_C
+ AC_COMPILE_IFELSE(
+ AC_LANG_SOURCE(
+ [[#include <jni.h>]]
+ ),
+ passed=`expr $passed + 1`,failed=`expr $failed + 1`
+ )
+ AC_LANG_RESTORE
+ CPPFLAGS="$JAVA_OLD_CPPFLAGS"
+ JAVA_FLAGS="-I$JAVA_HOME/$java_inc_dir -I$JAVA_HOME/$java_inc_dir/$java_extra_inc -DHasJava"
+ fi
+ AC_MSG_CHECKING(if JAVA package is complete)
+ if test $passed -gt 0
+ then
+ if test $failed -gt 0
+ then
+ AC_MSG_RESULT(no -- some components failed test)
+ have_java='no (failed tests)'
+ JAVA_FLAGS=
+ else
+ if test "x$JAVA_HOME" = 'x'
+ then
+ JAVA_FLAGS=
+ else
+ LIB_JAVA="-L$JAVA_HOME/lib"
+ fi
+ AC_DEFINE(HasJava,1,Define if you have Java)
+ AC_MSG_RESULT(yes)
+ have_java='yes'
+ fi
+ else
+ JAVA_FLAGS=
+ AC_MSG_RESULT(no)
+ fi
+fi
+AM_CONDITIONAL(HasJava, test "x$have_java" = 'xyes')
+AC_SUBST(LIB_JAVA)
+AC_SUBST(JAVA_FLAGS)
+AC_SUBST(JAVA_HOME)
+])
+
+
Modified: freeswitch/trunk/build/modules.conf.in
==============================================================================
--- freeswitch/trunk/build/modules.conf.in (original)
+++ freeswitch/trunk/build/modules.conf.in Tue Sep 25 09:21:17 2007
@@ -41,6 +41,7 @@
formats/mod_sndfile
#formats/mod_shout
#formats/mod_local_stream
+#languages/mod_java
#languages/mod_perl
#languages/mod_python
#languages/mod_spidermonkey
Modified: freeswitch/trunk/conf/freeswitch.xml
==============================================================================
--- freeswitch/trunk/conf/freeswitch.xml (original)
+++ freeswitch/trunk/conf/freeswitch.xml Tue Sep 25 09:21:17 2007
@@ -117,6 +117,7 @@
<!-- Languages -->
<!--#include "spidermonkey.conf.xml"-->
<!-- none for mod_perl -->
+ <!--#include "java.conf.xml"-->
<!-- ASR /TTS -->
<!-- none for mod_cepstral -->
Added: freeswitch/trunk/conf/java.conf.xml
==============================================================================
--- (empty file)
+++ freeswitch/trunk/conf/java.conf.xml Tue Sep 25 09:21:17 2007
@@ -0,0 +1,11 @@
+<configuration name="java.conf" description="Java Plug-Ins">
+ <!-- Path to the Java 1.6 virtual machine to use -->
+ <javavm path="/usr/java/jdk1.6.0/jre/lib/i386/client/libjvm.so"/>
+ <!-- Options to pass to Java -->
+ <options>
+ <!-- Your class path (make sure freeswitch.jar is on it) -->
+ <option value="-Djava.class.path=/usr/local/freeswitch/scripts/freeswitch.jar"/>
+ <!-- Enable remote debugging -->
+ <option value="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=127.0.0.1:8000"/>
+ </options>
+</configuration>
Modified: freeswitch/trunk/conf/modules.conf.xml
==============================================================================
--- freeswitch/trunk/conf/modules.conf.xml (original)
+++ freeswitch/trunk/conf/modules.conf.xml Tue Sep 25 09:21:17 2007
@@ -63,6 +63,7 @@
<!-- <load module="mod_spidermonkey"/> -->
<!-- <load module="mod_perl"/> -->
<!-- <load module="mod_python"/> -->
+ <!-- <load module="mod_java"/> -->
<!-- ASR /TTS -->
<!-- <load module="mod_cepstral"/> -->
Modified: freeswitch/trunk/configure.in
==============================================================================
--- freeswitch/trunk/configure.in (original)
+++ freeswitch/trunk/configure.in Tue Sep 25 09:21:17 2007
@@ -337,6 +337,7 @@
#AX_LIB_MYSQL([MINIMUM-VERSION])
AX_LIB_MYSQL
+AX_CHECK_JAVA
AM_CONDITIONAL([ADD_ODBC],[test "x$enable_core_odbc_support" != "xno"])
AM_CONDITIONAL([ADD_LIBEDIT],[test "x$enable_core_libedit_support" != "xno"])
@@ -348,6 +349,7 @@
src/mod/event_handlers/mod_cdr/Makefile
src/mod/endpoints/mod_sofia/Makefile
src/mod/event_handlers/mod_radius_cdr/Makefile
+ src/mod/languages/mod_java/Makefile
src/include/switch_am_config.h
build/getlib.sh
build/modmake.rules])
Added: freeswitch/trunk/src/mod/languages/mod_java/Makefile.in
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/Makefile.in Tue Sep 25 09:21:17 2007
@@ -0,0 +1,31 @@
+# define these targets in your makefile if you wish
+# local_all local_depend local_clean depend_install local_install local_distclean local_extraclean:
+
+# and define these variables to impact your build
+
+JAVA_FLAGS=@JAVA_FLAGS@
+JAVA_HOME=@JAVA_HOME@
+# Without -fno-strict-aliasing, g++ generates invalid code for Java_org_freeswitch_freeswitchJNI_SWIGJavaSessionUpcast, which segfaults
+LOCAL_CFLAGS=$(JAVA_FLAGS) -fno-strict-aliasing
+LOCAL_OBJS=freeswitch_java.o switch_swig_wrap.o
+CLASSES=src/org/freeswitch/Launcher.java \
+ src/org/freeswitch/HangupHook.java \
+ src/org/freeswitch/DTMFCallback.java \
+ src/org/freeswitch/FreeswitchScript.java \
+ src/org/freeswitch/Event.java \
+ src/org/freeswitch/swig/*
+include ../../../../build/modmake.rules
+
+
+local_depend:
+ mkdir -p classes
+ $(JAVA_HOME)/bin/javac -sourcepath src -d classes $(CLASSES)
+ $(JAVA_HOME)/bin/jar cf freeswitch.jar -C classes org
+
+reswig:
+ rm -f switch_swig_wrap.cpp
+ swig -java -c++ -I../../../include -package org.freeswitch.swig -outdir src/org/freeswitch/swig -o switch_swig_wrap.cpp mod_java.i
+
+local_install:
+ cp freeswitch.jar $(PREFIX)/scripts
+
Added: freeswitch/trunk/src/mod/languages/mod_java/freeswitch_java.cpp
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/freeswitch_java.cpp Tue Sep 25 09:21:17 2007
@@ -0,0 +1,330 @@
+#include "freeswitch_java.h"
+
+JavaSession::JavaSession() : CoreSession()
+{
+}
+
+JavaSession::JavaSession(char *uuid) : CoreSession(uuid)
+{
+}
+
+JavaSession::JavaSession(switch_core_session_t *session) : CoreSession(session)
+{
+}
+
+JavaSession::~JavaSession()
+{
+ JNIEnv *env;
+ jint res;
+
+ res = javaVM->GetEnv((void**)&env, JNI_VERSION_1_6);
+ if (res == JNI_OK)
+ {
+ if (cb_state.function)
+ {
+ env->DeleteGlobalRef((jobject)cb_state.function);
+ cb_state.function = NULL;
+ if (cb_state.funcargs)
+ {
+ env->DeleteGlobalRef((jobject)cb_state.funcargs);
+ cb_state.funcargs = NULL;
+ }
+ }
+ if (on_hangup)
+ env->DeleteGlobalRef((jobject)on_hangup);
+ }
+ else
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "error getting JNIEnv, memory leaked!\n");
+}
+
+bool JavaSession::begin_allow_threads()
+{
+ // Java uses kernel-threads
+ return true;
+}
+
+bool JavaSession::end_allow_threads()
+{
+ // Java uses kernel-threads
+ return true;
+}
+
+void JavaSession::setDTMFCallback(jobject dtmfCallback, char *funcargs)
+{
+ JNIEnv *env;
+ jobject globalDTMFCallback = NULL;
+ jstring args = NULL;
+ jobject globalArgs = NULL;
+ jint res;
+
+ res = javaVM->GetEnv((void**)&env, JNI_VERSION_1_6);
+ if (res != JNI_OK)
+ {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "error getting JNIEnv!\n");
+ return;
+ }
+
+ globalDTMFCallback = env->NewGlobalRef(dtmfCallback);
+ if (globalDTMFCallback == NULL)
+ goto fail;
+
+ args = env->NewStringUTF(funcargs);
+ if (args == NULL)
+ goto fail;
+ globalArgs = env->NewGlobalRef(args);
+ env->DeleteLocalRef(args);
+ if (globalArgs == NULL)
+ goto fail;
+
+ // Free previous callback
+ if (cb_state.function != NULL)
+ {
+ env->DeleteGlobalRef((jobject)cb_state.function);
+ cb_state.function = NULL;
+ if (cb_state.funcargs != NULL)
+ {
+ env->DeleteGlobalRef((jobject)cb_state.funcargs);
+ cb_state.funcargs = NULL;
+ }
+ }
+
+ CoreSession::setDTMFCallback(globalDTMFCallback, (char*) globalArgs);
+ return;
+
+fail:
+ if (globalDTMFCallback)
+ env->DeleteGlobalRef(globalDTMFCallback);
+ if (globalArgs)
+ env->DeleteGlobalRef(globalArgs);
+}
+
+void JavaSession::setHangupHook(jobject hangupHook)
+{
+ JNIEnv *env;
+ jobject globalHangupHook;
+ jint res;
+
+ res = javaVM->GetEnv((void**)&env, JNI_VERSION_1_6);
+ if (res != JNI_OK)
+ {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "error getting JNIEnv!\n");
+ return;
+ }
+
+ globalHangupHook = env->NewGlobalRef(hangupHook);
+ if (globalHangupHook == NULL)
+ return;
+
+ // Free previous hook
+ if (on_hangup != NULL)
+ {
+ env->DeleteGlobalRef((jobject)on_hangup);
+ on_hangup = NULL;
+ }
+
+ CoreSession::setHangupHook(globalHangupHook);
+}
+
+void JavaSession::check_hangup_hook()
+{
+ JNIEnv *env;
+ jint res;
+ bool needDetach = false;
+
+ if (!session)
+ {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "No valid session\n");
+ return;
+ }
+
+ if (on_hangup == NULL)
+ {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "on_hangup is null\n");
+ return;
+ }
+
+ res = javaVM->GetEnv((void**)&env, JNI_VERSION_1_6);
+ if (res == JNI_EDETACHED)
+ {
+ res = javaVM->AttachCurrentThread((void**)&env, NULL);
+ if (res == JNI_OK)
+ needDetach = true;
+ }
+ if (res == JNI_OK)
+ {
+ jclass klass = env->GetObjectClass((jobject)on_hangup);
+ if (klass != NULL)
+ {
+ jmethodID onHangup = env->GetMethodID(klass, "onHangup", "()V");
+ if (onHangup != NULL)
+ env->CallVoidMethod((jobject)on_hangup, onHangup);
+
+ env->DeleteLocalRef(klass);
+ }
+ if (needDetach)
+ javaVM->DetachCurrentThread();
+ }
+ else
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR,
+ "attaching thread to JVM failed, error %d\n", res);
+}
+
+switch_status_t JavaSession::run_dtmf_callback(void *input, switch_input_type_t itype)
+{
+ JNIEnv *env;
+ jclass klass = NULL;
+ jmethodID onDTMF;
+ jstring digits = NULL;
+ jint res;
+ jstring callbackResult = NULL;
+ switch_status_t status;
+
+ if (cb_state.function == NULL)
+ {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "cb_state->function is null\n");
+ return SWITCH_STATUS_FALSE;
+ }
+
+ res = javaVM->GetEnv((void**)&env, JNI_VERSION_1_6);
+ if (res != JNI_OK)
+ {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "error getting JNIEnv!\n");
+ return SWITCH_STATUS_FALSE;
+ }
+
+ klass = env->GetObjectClass((jobject)cb_state.function);
+ if (klass == NULL)
+ return SWITCH_STATUS_FALSE;
+
+ onDTMF = env->GetMethodID(klass, "onDTMF", "(Ljava/lang/Object;ILjava/lang/String;)Ljava/lang/String;");
+ if (onDTMF == NULL)
+ {
+ status = SWITCH_STATUS_FALSE;
+ goto done;
+ }
+
+ if (itype == SWITCH_INPUT_TYPE_DTMF)
+ {
+ digits = env->NewStringUTF((char*)input);
+ if (digits == NULL)
+ {
+ status = SWITCH_STATUS_FALSE;
+ goto done;
+ }
+ callbackResult = (jstring) env->CallObjectMethod((jobject)cb_state.function, onDTMF, digits, itype, (jstring)cb_state.funcargs);
+ const char *callbackResultUTF = env->GetStringUTFChars(callbackResult, NULL);
+ if (callbackResultUTF)
+ {
+ status = process_callback_result((char*) callbackResultUTF, &cb_state, session);
+ env->ReleaseStringUTFChars(callbackResult, callbackResultUTF);
+ }
+ else
+ status = SWITCH_STATUS_FALSE;
+ }
+ else if (itype == SWITCH_INPUT_TYPE_EVENT)
+ {
+ // :-)
+ switch_event_t *switch_event = (switch_event_t*) input;
+ switch_event_header *header;
+ jclass Event = NULL;
+ jobject event = NULL;
+ jstring body = NULL;
+ jmethodID constructor, setBody, addHeader;
+ const char *callbackResultUTF;
+
+ env->FindClass("org/freeswitch/Event");
+ if (Event == NULL)
+ {
+ status = SWITCH_STATUS_FALSE;
+ goto cleanup;
+ }
+ constructor = env->GetMethodID(Event, "<init>", "()V");
+ if (constructor == NULL)
+ {
+ status = SWITCH_STATUS_FALSE;
+ goto cleanup;
+ }
+ event = env->CallStaticObjectMethod(Event, constructor);
+ if (event == NULL)
+ {
+ status = SWITCH_STATUS_FALSE;
+ goto cleanup;
+ }
+
+ setBody = env->GetMethodID(Event, "setBody", "(Ljava/lang/String;)V");
+ if (setBody == NULL)
+ {
+ status = SWITCH_STATUS_FALSE;
+ goto cleanup;
+ }
+ body = env->NewStringUTF(switch_event->body);
+ if (body == NULL)
+ {
+ status = SWITCH_STATUS_FALSE;
+ goto cleanup;
+ }
+ env->CallVoidMethod(event, setBody, body);
+ if (env->ExceptionOccurred())
+ goto cleanup;
+
+ addHeader = env->GetMethodID(Event, "addHeader", "(Ljava/lang/String;Ljava/lang/String;)V");
+ if (addHeader == NULL)
+ {
+ status = SWITCH_STATUS_FALSE;
+ goto cleanup;
+ }
+ for (header = switch_event->headers; header; header = header->next)
+ {
+ jstring name = NULL;
+ jstring value = NULL;
+
+ name = env->NewStringUTF(header->name);
+ if (name == NULL)
+ goto endloop;
+ value = env->NewStringUTF(header->value);
+ if (value == NULL)
+ goto endloop;
+
+ env->CallVoidMethod(event, addHeader, name, value);
+
+ endloop:
+ if (name != NULL)
+ env->DeleteLocalRef(name);
+ if (value != NULL)
+ env->DeleteLocalRef(value);
+ if (env->ExceptionOccurred())
+ {
+ status = SWITCH_STATUS_FALSE;
+ goto cleanup;
+ }
+ }
+
+ callbackResult = (jstring) env->CallObjectMethod((jobject)cb_state.function, onDTMF, event, itype, (jstring)cb_state.funcargs);
+ callbackResultUTF = env->GetStringUTFChars(callbackResult, NULL);
+ if (callbackResultUTF)
+ {
+ status = process_callback_result((char*) callbackResultUTF, &cb_state, session);
+ env->ReleaseStringUTFChars(callbackResult, callbackResultUTF);
+ }
+ else
+ status = SWITCH_STATUS_FALSE;
+
+ cleanup:
+ if (Event != NULL)
+ env->DeleteLocalRef(Event);
+ if (event != NULL)
+ env->DeleteLocalRef(event);
+ if (body != NULL)
+ env->DeleteLocalRef(body);
+ }
+
+done:
+ if (klass != NULL)
+ env->DeleteLocalRef(klass);
+ if (digits != NULL)
+ env->DeleteLocalRef(digits);
+ if (callbackResult != NULL)
+ env->DeleteLocalRef(callbackResult);
+ return status;
+}
+
Added: freeswitch/trunk/src/mod/languages/mod_java/freeswitch_java.h
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/freeswitch_java.h Tue Sep 25 09:21:17 2007
@@ -0,0 +1,26 @@
+#ifndef FREESWITCH_JAVA_H
+#define FREESWITCH_JAVA_H
+
+#include <switch_cpp.h>
+#include <jni.h>
+
+extern JavaVM *javaVM;
+
+class JavaSession : public CoreSession
+{
+ public:
+ JavaSession();
+ JavaSession(char *uuid);
+ JavaSession(switch_core_session_t *session);
+ virtual ~JavaSession();
+
+ virtual bool begin_allow_threads();
+ virtual bool end_allow_threads();
+ void setDTMFCallback(jobject dtmfCallback, char *funcargs);
+ void setHangupHook(jobject hangupHook);
+ virtual void check_hangup_hook();
+ virtual switch_status_t run_dtmf_callback(void *input, switch_input_type_t itype);
+};
+
+#endif
+
Added: freeswitch/trunk/src/mod/languages/mod_java/mod_java.c
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/mod_java.c Tue Sep 25 09:21:17 2007
@@ -0,0 +1,300 @@
+/*
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2007, Damjan Jovanovic <d a m j a n d o t j o v a t g m a i l d o t c o m>
+ *
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ *
+ * The Initial Developer of the Original Code is
+ * Damjan Jovanovic <d a m j a n d o t j o v a t g m a i l d o t c o m>
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Damjan Jovanovic <d a m j a n d o t j o v a t g m a i l d o t c o m>
+ *
+ *
+ * mod_java.c -- Java Module
+ *
+ */
+
+#include <switch.h>
+#include <jni.h>
+
+
+static switch_memory_pool_t *memoryPool = NULL;
+static switch_dso_handle_t *javaVMHandle = NULL;
+
+JavaVM *javaVM = NULL;
+
+
+SWITCH_MODULE_LOAD_FUNCTION(mod_java_load);
+SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_java_shutdown);
+SWITCH_MODULE_DEFINITION(mod_java, mod_java_load, mod_java_shutdown, NULL);
+
+
+static void launch_java(switch_core_session_t *session, char *data, JNIEnv *env)
+{
+ jclass Launcher = NULL;
+ jmethodID launch = NULL;
+ jstring uuid = NULL;
+ jstring args = NULL;
+
+ Launcher = (*env)->FindClass(env, "org/freeswitch/Launcher");
+ if (Launcher == NULL)
+ {
+ (*env)->ExceptionDescribe(env);
+ goto done;
+ }
+
+ launch = (*env)->GetStaticMethodID(env, Launcher, "launch", "(Ljava/lang/String;Ljava/lang/String;)V");
+ if (launch == NULL)
+ {
+ (*env)->ExceptionDescribe(env);
+ goto done;
+ }
+
+ uuid = (*env)->NewStringUTF(env, switch_core_session_get_uuid(session));
+ if (uuid == NULL)
+ {
+ (*env)->ExceptionDescribe(env);
+ goto done;
+ }
+
+ args = (*env)->NewStringUTF(env, data);
+ if (args == NULL)
+ {
+ (*env)->ExceptionDescribe(env);
+ goto done;
+ }
+
+ (*env)->CallStaticVoidMethod(env, Launcher, launch, uuid, args);
+ if ((*env)->ExceptionOccurred(env))
+ (*env)->ExceptionDescribe(env);
+
+done:
+ if (args != NULL)
+ (*env)->DeleteLocalRef(env, args);
+ if (uuid != NULL)
+ (*env)->DeleteLocalRef(env, uuid);
+ if (Launcher != NULL)
+ (*env)->DeleteLocalRef(env, Launcher);
+}
+
+static void java_function(switch_core_session_t *session, char *data)
+{
+ JNIEnv *env;
+ jint res;
+
+ if (javaVM == NULL)
+ return;
+
+ res = (*javaVM)->AttachCurrentThread(javaVM, (void*) &env, NULL);
+ if (res == JNI_OK)
+ {
+ launch_java(session, data, env);
+ (*javaVM)->DetachCurrentThread(javaVM);
+ }
+ else
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error attaching thread to Java VM!\n");
+}
+
+
+static switch_application_interface_t java_application_interface = {
+ /*.interface_name */ "java",
+ /*.application_function */ java_function,
+ NULL, NULL, NULL,
+ /* flags */ SAF_NONE,
+ /* should we support no media mode here? If so, we need to detect the mode, and either disable the media functions or indicate media if/when we need */
+ /*.next */ NULL
+};
+
+static switch_loadable_module_interface_t java_module_interface = {
+ /*.module_name */ modname,
+ /*.endpoint_interface */ NULL,
+ /*.timer_interface */ NULL,
+ /*.dialplan_interface */ NULL,
+ /*.codec_interface */ NULL,
+ /*.application_interface */ &java_application_interface,
+ /*.api_interface */ NULL,
+ /*.file_interface */ NULL,
+ /*.speech_interface */ NULL,
+ /*.directory_interface */ NULL
+};
+
+static switch_status_t load_config(JavaVMOption **javaOptions, int *optionCount)
+{
+ switch_xml_t cfg, xml;
+ switch_status_t status;
+
+ xml = switch_xml_open_cfg("java.conf", &cfg, NULL);
+ if (xml)
+ {
+ switch_xml_t javavm;
+ switch_xml_t options;
+
+ javavm = switch_xml_child(cfg, "javavm");
+ if (javavm != NULL)
+ {
+ const char *path = switch_xml_attr_soft(javavm, "path");
+ if (path != NULL)
+ {
+ status = switch_dso_load(&javaVMHandle, path, memoryPool);
+ if (status != SWITCH_STATUS_SUCCESS)
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error loading %s\n", path);
+ }
+ else
+ {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No Java VM path specified in java.conf.xml\n");
+ status = SWITCH_STATUS_FALSE;
+ }
+ }
+ else
+ {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No Java VM specified in java.conf.xml\n");
+ status = SWITCH_STATUS_FALSE;
+ goto close;
+ }
+
+ options = switch_xml_child(cfg, "options");
+ if (options != NULL)
+ {
+ switch_xml_t option;
+ int i = 0;
+ *optionCount = 0;
+ for (option = switch_xml_child(options, "option"); option; option = option->next)
+ {
+ const char *value = switch_xml_attr_soft(option, "value");
+ if (value != NULL)
+ ++*optionCount;
+ }
+ *optionCount += 1;
+ *javaOptions = switch_core_alloc(memoryPool, (switch_size_t)(*optionCount * sizeof(JavaVMOption)));
+ if (*javaOptions == NULL)
+ {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Out of memory!\n");
+ status = SWITCH_STATUS_FALSE;
+ goto close;
+ }
+ for (option = switch_xml_child(options, "option"); option; option = option->next)
+ {
+ const char *value = switch_xml_attr_soft(option, "value");
+ if (value == NULL)
+ continue;
+ (*javaOptions)[i].optionString = switch_core_strdup(memoryPool, value);
+ if ((*javaOptions)[i].optionString == NULL)
+ {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Out of memory!\n");
+ status = SWITCH_STATUS_FALSE;
+ goto close;
+ }
+ ++i;
+ }
+ (*javaOptions)[i].optionString = "-Djava.library.path=" SWITCH_PREFIX_DIR SWITCH_PATH_SEPARATOR "mod";
+ }
+
+ close:
+ switch_xml_free(xml);
+ }
+ else
+ {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error opening java.conf.xml\n");
+ status = SWITCH_STATUS_FALSE;
+ }
+ return status;
+}
+
+static switch_status_t create_java_vm(JavaVMOption *options, int optionCount)
+{
+ jint (JNICALL *pJNI_CreateJavaVM)(JavaVM**,void**,void*);
+ switch_status_t status;
+
+ status = switch_dso_sym((void*) &pJNI_CreateJavaVM, javaVMHandle, "JNI_CreateJavaVM");
+ if (status == SWITCH_STATUS_SUCCESS)
+ {
+ JNIEnv *env;
+ JavaVMInitArgs initArgs;
+ jint res;
+
+ memset(&initArgs, 0, sizeof(initArgs));
+ initArgs.version = JNI_VERSION_1_6;
+ initArgs.nOptions = optionCount;
+ initArgs.options = options;
+ initArgs.ignoreUnrecognized = JNI_TRUE;
+
+ res = pJNI_CreateJavaVM(&javaVM, (void*) &env, &initArgs);
+ if (res == JNI_OK)
+ {
+ (*javaVM)->DetachCurrentThread(javaVM);
+ status = SWITCH_STATUS_SUCCESS;
+ }
+ else
+ {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error creating Java VM!\n");
+ status = SWITCH_STATUS_FALSE;
+ }
+ }
+ else
+ {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Specified Java VM doesn't have JNI_CreateJavaVM\n");
+ status = SWITCH_STATUS_FALSE;
+ }
+ return status;
+}
+
+SWITCH_MODULE_LOAD_FUNCTION(mod_java_load)
+{
+ switch_status_t status;
+ JavaVMOption *options = NULL;
+ int optionCount = 0;
+
+ /* connect my internal structure to the blank pointer passed to me */
+ *module_interface = &java_module_interface;
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Java Framework Loading...\n");
+
+ if (javaVM != NULL)
+ return SWITCH_STATUS_SUCCESS;
+
+ status = switch_core_new_memory_pool(&memoryPool);
+ if (status == SWITCH_STATUS_SUCCESS)
+ {
+ status = load_config(&options, &optionCount);
+ if (status == SWITCH_STATUS_SUCCESS)
+ {
+ status = create_java_vm(options, optionCount);
+ if (status == SWITCH_STATUS_SUCCESS)
+ return SWITCH_STATUS_SUCCESS;
+ switch_dso_unload(javaVMHandle);
+ }
+ switch_core_destroy_memory_pool(&memoryPool);
+ }
+ else
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error creating memory pool\n");
+ return status;
+}
+
+SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_java_shutdown)
+{
+ if (javaVM == NULL)
+ return SWITCH_STATUS_FALSE;
+
+ (*javaVM)->DestroyJavaVM(javaVM);
+ javaVM = NULL;
+ switch_dso_unload(javaVMHandle);
+ switch_core_destroy_memory_pool(&memoryPool);
+ return SWITCH_STATUS_SUCCESS;
+}
+
+
Added: freeswitch/trunk/src/mod/languages/mod_java/mod_java.i
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/mod_java.i Tue Sep 25 09:21:17 2007
@@ -0,0 +1,57 @@
+%module freeswitch
+
+/** insert the following includes into generated code so it compiles */
+%{
+#include "switch_cpp.h"
+#include "freeswitch_java.h"
+%}
+
+%ignore SwitchToMempool;
+
+
+
+// I thought we were using swig because it's easier than the alternatives :-)
+
+%typemap(jtype) jobject dtmfCallback "org.freeswitch.DTMFCallback"
+%typemap(jstype) jobject dtmfCallback "org.freeswitch.DTMFCallback"
+
+%typemap(jtype) jobject hangupHook "org.freeswitch.HangupHook"
+%typemap(jstype) jobject hangupHook "org.freeswitch.HangupHook"
+
+// Taken from various.i definitions for BYTE
+%typemap(jni) char *dtmf_buf "jbyteArray"
+%typemap(jtype) char *dtmf_buf "byte[]"
+%typemap(jstype) char *dtmf_buf "byte[]"
+%typemap(in) char *dtmf_buf
+{
+ $1 = (char*) JCALL2(GetByteArrayElements, jenv, $input, 0);
+ if (!$1) return 0;
+}
+%typemap(argout) char *dtmf_buf
+{
+ JCALL3(ReleaseByteArrayElements, jenv, $input, (jbyte*) $1, 0);
+}
+%typemap(javain) char *dtmf_buf "$javainput"
+%typemap(freearg) char *dtmf_buf ""
+
+%typemap(jni) char *terminator "jbyteArray"
+%typemap(jtype) char *terminator "byte[]"
+%typemap(jstype) char *terminator "byte[]"
+%typemap(in) char *terminator
+{
+ $1 = (char*) JCALL2(GetByteArrayElements, jenv, $input, 0);
+ if (!$1) return 0;
+}
+%typemap(argout) char *terminator
+{
+ JCALL3(ReleaseByteArrayElements, jenv, $input, (jbyte*) $1, 0);
+}
+%typemap(javain) char *terminator "$javainput"
+%typemap(freearg) char *terminator ""
+
+
+
+%include "enums.swg"
+%include switch_cpp.h
+%include freeswitch_java.h
+
Added: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/DTMFCallback.java
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/DTMFCallback.java Tue Sep 25 09:21:17 2007
@@ -0,0 +1,7 @@
+package org.freeswitch;
+
+public interface DTMFCallback
+{
+ String onDTMF(Object input, int inputType, String args);
+}
+
Added: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/Event.java
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/Event.java Tue Sep 25 09:21:17 2007
@@ -0,0 +1,30 @@
+package org.freeswitch;
+
+import java.util.*;
+
+public class Event
+{
+ private String m_body;
+ private TreeMap<String,String> m_headers = new TreeMap<String,String>();
+
+ private void setBody(String body)
+ {
+ m_body = body;
+ }
+
+ private void addHeader(String name, String value)
+ {
+ m_headers.put(name, value);
+ }
+
+ public String getBody()
+ {
+ return m_body;
+ }
+
+ public TreeMap<String,String> getHeaders()
+ {
+ return m_headers;
+ }
+}
+
Added: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/FreeswitchScript.java
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/FreeswitchScript.java Tue Sep 25 09:21:17 2007
@@ -0,0 +1,7 @@
+package org.freeswitch;
+
+public interface FreeswitchScript
+{
+ void run(String uuid, String args);
+}
+
Added: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/HangupHook.java
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/HangupHook.java Tue Sep 25 09:21:17 2007
@@ -0,0 +1,8 @@
+package org.freeswitch;
+
+public interface HangupHook
+{
+ /** Called on hangup, usually in a different thread. */
+ public void onHangup();
+}
+
Added: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/Launcher.java
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/Launcher.java Tue Sep 25 09:21:17 2007
@@ -0,0 +1,82 @@
+/*
+ * Launcher.java
+ *
+ * Created on 13 September 2007, 06:40
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package org.freeswitch;
+
+import java.io.*;
+import java.net.*;
+import java.lang.reflect.*;
+
+/**
+ *
+ * @author dacha
+ */
+public class Launcher
+{
+ static
+ {
+ // Find and load mod_java
+ String javaLibraryPaths = System.getProperty("java.library.path");
+ String pathSeparator = System.getProperty("path.separator");
+ String libraryPaths[] = javaLibraryPaths.split(pathSeparator);
+
+ String libraryName = System.mapLibraryName("mod_java");
+ int modJavaIndex = libraryName.indexOf("mod_java");
+ if (modJavaIndex >= 0)
+ libraryName = libraryName.substring(modJavaIndex);
+
+ for (String libraryPath : libraryPaths)
+ {
+ String fullLibraryPath = libraryPath + File.separatorChar + libraryName;
+ if (new File(fullLibraryPath).exists())
+ {
+ System.load(fullLibraryPath);
+ break;
+ }
+ }
+ }
+
+ public static void launch(String sessionUuid, String args) throws Exception
+ {
+ String argv[] = args.split("[ ]");
+ if (argv.length == 0)
+ {
+ System.out.println("Too few arguments to mod java");
+ System.out.println("Usage: java /path/to/file.jar fully.qualified.class arg1 arg2 arg3");
+ System.out.println("Usage: java fully.qualified.class arg1 arg2 arg3");
+ return;
+ }
+
+ Class klazz;
+ int argsOffset;
+ if (argv[0].endsWith(".jar") || argv[0].endsWith(".JAR"))
+ {
+ if (argv.length < 2)
+ throw new Exception("Too few arguments: must specify fully qualified class name when loading from JAR file");
+ URL urls[] = new URL[1];
+ urls[0] = new File(argv[0]).toURI().toURL();
+ URLClassLoader urlClassLoader = new URLClassLoader(urls);
+ klazz = Class.forName(argv[1], true, urlClassLoader);
+ argsOffset = argv[0].length() + argv[1].length() + 2;
+ }
+ else
+ {
+ klazz = Class.forName(argv[0]);
+ argsOffset = argv[0].length() + 1;
+ }
+
+ Constructor constructor = klazz.getConstructor();
+ Object object = constructor.newInstance();
+ Method run = klazz.getMethod("run", String.class, String.class);
+ String newArgs = "";
+ if (argsOffset < args.length())
+ newArgs = args.substring(argsOffset);
+ run.invoke(object, sessionUuid, newArgs);
+ }
+}
Added: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/CoreSession.java
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/CoreSession.java Tue Sep 25 09:21:17 2007
@@ -0,0 +1,191 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * 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 CoreSession {
+ private long swigCPtr;
+ protected boolean swigCMemOwn;
+
+ protected CoreSession(long cPtr, boolean cMemoryOwn) {
+ swigCMemOwn = cMemoryOwn;
+ swigCPtr = cPtr;
+ }
+
+ protected static long getCPtr(CoreSession obj) {
+ return (obj == null) ? 0 : obj.swigCPtr;
+ }
+
+ protected void finalize() {
+ delete();
+ }
+
+ public synchronized void delete() {
+ if(swigCPtr != 0 && swigCMemOwn) {
+ swigCMemOwn = false;
+ freeswitchJNI.delete_CoreSession(swigCPtr);
+ }
+ swigCPtr = 0;
+ }
+
+ public void setSession(SWIGTYPE_p_switch_core_session_t value) {
+ freeswitchJNI.CoreSession_session_set(swigCPtr, this, SWIGTYPE_p_switch_core_session_t.getCPtr(value));
+ }
+
+ public SWIGTYPE_p_switch_core_session_t getSession() {
+ long cPtr = freeswitchJNI.CoreSession_session_get(swigCPtr, this);
+ return (cPtr == 0) ? null : new SWIGTYPE_p_switch_core_session_t(cPtr, false);
+ }
+
+ public void setChannel(SWIGTYPE_p_switch_channel_t value) {
+ freeswitchJNI.CoreSession_channel_set(swigCPtr, this, SWIGTYPE_p_switch_channel_t.getCPtr(value));
+ }
+
+ public SWIGTYPE_p_switch_channel_t getChannel() {
+ long cPtr = freeswitchJNI.CoreSession_channel_get(swigCPtr, this);
+ return (cPtr == 0) ? null : new SWIGTYPE_p_switch_channel_t(cPtr, false);
+ }
+
+ public void setFlags(long value) {
+ freeswitchJNI.CoreSession_flags_set(swigCPtr, this, value);
+ }
+
+ public long getFlags() {
+ return freeswitchJNI.CoreSession_flags_get(swigCPtr, this);
+ }
+
+ public void setCb_state(input_callback_state_t value) {
+ freeswitchJNI.CoreSession_cb_state_set(swigCPtr, this, input_callback_state_t.getCPtr(value), value);
+ }
+
+ public input_callback_state_t getCb_state() {
+ long cPtr = freeswitchJNI.CoreSession_cb_state_get(swigCPtr, this);
+ return (cPtr == 0) ? null : new input_callback_state_t(cPtr, false);
+ }
+
+ public void setHook_state(SWIGTYPE_p_switch_channel_state_t value) {
+ freeswitchJNI.CoreSession_hook_state_set(swigCPtr, this, SWIGTYPE_p_switch_channel_state_t.getCPtr(value));
+ }
+
+ public SWIGTYPE_p_switch_channel_state_t getHook_state() {
+ return new SWIGTYPE_p_switch_channel_state_t(freeswitchJNI.CoreSession_hook_state_get(swigCPtr, this), true);
+ }
+
+ public int answer() {
+ return freeswitchJNI.CoreSession_answer(swigCPtr, this);
+ }
+
+ public int preAnswer() {
+ return freeswitchJNI.CoreSession_preAnswer(swigCPtr, this);
+ }
+
+ public void hangup(String cause) {
+ freeswitchJNI.CoreSession_hangup(swigCPtr, this, cause);
+ }
+
+ public void setVariable(String var, String val) {
+ freeswitchJNI.CoreSession_setVariable(swigCPtr, this, var, val);
+ }
+
+ public String getVariable(String var) {
+ return freeswitchJNI.CoreSession_getVariable(swigCPtr, this, var);
+ }
+
+ public int recordFile(String file_name, int max_len, int silence_threshold, int silence_secs) {
+ return freeswitchJNI.CoreSession_recordFile(swigCPtr, this, file_name, max_len, silence_threshold, silence_secs);
+ }
+
+ public void setCallerData(String var, String val) {
+ freeswitchJNI.CoreSession_setCallerData(swigCPtr, this, var, val);
+ }
+
+ public int originate(CoreSession a_leg_session, String dest, int timeout) {
+ return freeswitchJNI.CoreSession_originate(swigCPtr, this, CoreSession.getCPtr(a_leg_session), a_leg_session, dest, timeout);
+ }
+
+ public void setDTMFCallback(SWIGTYPE_p_void cbfunc, String funcargs) {
+ freeswitchJNI.CoreSession_setDTMFCallback(swigCPtr, this, SWIGTYPE_p_void.getCPtr(cbfunc), funcargs);
+ }
+
+ public int speak(String text) {
+ return freeswitchJNI.CoreSession_speak(swigCPtr, this, text);
+ }
+
+ public void set_tts_parms(String tts_name, String voice_name) {
+ freeswitchJNI.CoreSession_set_tts_parms(swigCPtr, this, tts_name, voice_name);
+ }
+
+ public int collectDigits(int timeout) {
+ return freeswitchJNI.CoreSession_collectDigits(swigCPtr, this, timeout);
+ }
+
+ public int getDigits(byte[] dtmf_buf, int buflen, int maxdigits, String terminators, byte[] terminator, int timeout) {
+ return freeswitchJNI.CoreSession_getDigits(swigCPtr, this, dtmf_buf, buflen, maxdigits, terminators, terminator, timeout);
+ }
+
+ public int transfer(String extensions, String dialplan, String context) {
+ return freeswitchJNI.CoreSession_transfer(swigCPtr, this, extensions, dialplan, context);
+ }
+
+ public int playAndGetDigits(int min_digits, int max_digits, int max_tries, int timeout, String terminators, String audio_files, String bad_input_audio_files, byte[] dtmf_buf, String digits_regex) {
+ return freeswitchJNI.CoreSession_playAndGetDigits(swigCPtr, this, min_digits, max_digits, max_tries, timeout, terminators, audio_files, bad_input_audio_files, dtmf_buf, digits_regex);
+ }
+
+ public int streamFile(String file, int starting_sample_count) {
+ return freeswitchJNI.CoreSession_streamFile(swigCPtr, this, file, starting_sample_count);
+ }
+
+ public int flushEvents() {
+ return freeswitchJNI.CoreSession_flushEvents(swigCPtr, this);
+ }
+
+ public int flushDigits() {
+ return freeswitchJNI.CoreSession_flushDigits(swigCPtr, this);
+ }
+
+ public int setAutoHangup(boolean val) {
+ return freeswitchJNI.CoreSession_setAutoHangup(swigCPtr, this, val);
+ }
+
+ public void setHangupHook(SWIGTYPE_p_void hangup_func) {
+ freeswitchJNI.CoreSession_setHangupHook(swigCPtr, this, SWIGTYPE_p_void.getCPtr(hangup_func));
+ }
+
+ public boolean ready() {
+ return freeswitchJNI.CoreSession_ready(swigCPtr, this);
+ }
+
+ public void execute(String app, String data) {
+ freeswitchJNI.CoreSession_execute(swigCPtr, this, app, data);
+ }
+
+ public boolean begin_allow_threads() {
+ return freeswitchJNI.CoreSession_begin_allow_threads(swigCPtr, this);
+ }
+
+ public boolean end_allow_threads() {
+ return freeswitchJNI.CoreSession_end_allow_threads(swigCPtr, this);
+ }
+
+ public String get_uuid() {
+ return freeswitchJNI.CoreSession_get_uuid(swigCPtr, this);
+ }
+
+ public SWIGTYPE_p_switch_input_args_t get_cb_args() {
+ return new SWIGTYPE_p_switch_input_args_t(freeswitchJNI.CoreSession_get_cb_args(swigCPtr, this), false);
+ }
+
+ public void check_hangup_hook() {
+ freeswitchJNI.CoreSession_check_hangup_hook(swigCPtr, this);
+ }
+
+ public SWIGTYPE_p_switch_status_t run_dtmf_callback(SWIGTYPE_p_void input, SWIGTYPE_p_switch_input_type_t itype) {
+ return new SWIGTYPE_p_switch_status_t(freeswitchJNI.CoreSession_run_dtmf_callback(swigCPtr, this, SWIGTYPE_p_void.getCPtr(input), SWIGTYPE_p_switch_input_type_t.getCPtr(itype)), true);
+ }
+
+}
Added: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/JavaSession.java
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/JavaSession.java Tue Sep 25 09:21:17 2007
@@ -0,0 +1,72 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * 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 JavaSession extends CoreSession {
+ private long swigCPtr;
+
+ protected JavaSession(long cPtr, boolean cMemoryOwn) {
+ super(freeswitchJNI.SWIGJavaSessionUpcast(cPtr), cMemoryOwn);
+ swigCPtr = cPtr;
+ }
+
+ protected static long getCPtr(JavaSession obj) {
+ return (obj == null) ? 0 : obj.swigCPtr;
+ }
+
+ protected void finalize() {
+ delete();
+ }
+
+ public synchronized void delete() {
+ if(swigCPtr != 0 && swigCMemOwn) {
+ swigCMemOwn = false;
+ freeswitchJNI.delete_JavaSession(swigCPtr);
+ }
+ swigCPtr = 0;
+ super.delete();
+ }
+
+ public JavaSession() {
+ this(freeswitchJNI.new_JavaSession__SWIG_0(), true);
+ }
+
+ public JavaSession(String uuid) {
+ this(freeswitchJNI.new_JavaSession__SWIG_1(uuid), true);
+ }
+
+ public JavaSession(SWIGTYPE_p_switch_core_session_t session) {
+ this(freeswitchJNI.new_JavaSession__SWIG_2(SWIGTYPE_p_switch_core_session_t.getCPtr(session)), true);
+ }
+
+ public boolean begin_allow_threads() {
+ return freeswitchJNI.JavaSession_begin_allow_threads(swigCPtr, this);
+ }
+
+ public boolean end_allow_threads() {
+ return freeswitchJNI.JavaSession_end_allow_threads(swigCPtr, this);
+ }
+
+ public void setDTMFCallback(org.freeswitch.DTMFCallback dtmfCallback, String funcargs) {
+ freeswitchJNI.JavaSession_setDTMFCallback(swigCPtr, this, dtmfCallback, funcargs);
+ }
+
+ public void setHangupHook(org.freeswitch.HangupHook hangupHook) {
+ freeswitchJNI.JavaSession_setHangupHook(swigCPtr, this, hangupHook);
+ }
+
+ public void check_hangup_hook() {
+ freeswitchJNI.JavaSession_check_hangup_hook(swigCPtr, this);
+ }
+
+ public SWIGTYPE_p_switch_status_t run_dtmf_callback(SWIGTYPE_p_void input, SWIGTYPE_p_switch_input_type_t itype) {
+ return new SWIGTYPE_p_switch_status_t(freeswitchJNI.JavaSession_run_dtmf_callback(swigCPtr, this, SWIGTYPE_p_void.getCPtr(input), SWIGTYPE_p_switch_input_type_t.getCPtr(itype)), true);
+ }
+
+}
Added: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_JavaVM.java
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_JavaVM.java Tue Sep 25 09:21:17 2007
@@ -0,0 +1,26 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * 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_JavaVM {
+ private long swigCPtr;
+
+ protected SWIGTYPE_p_JavaVM(long cPtr, boolean futureUse) {
+ swigCPtr = cPtr;
+ }
+
+ protected SWIGTYPE_p_JavaVM() {
+ swigCPtr = 0;
+ }
+
+ protected static long getCPtr(SWIGTYPE_p_JavaVM obj) {
+ return (obj == null) ? 0 : obj.swigCPtr;
+ }
+}
+
Added: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_channel_state_t.java
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_channel_state_t.java Tue Sep 25 09:21:17 2007
@@ -0,0 +1,26 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * 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_switch_channel_state_t {
+ private long swigCPtr;
+
+ protected SWIGTYPE_p_switch_channel_state_t(long cPtr, boolean futureUse) {
+ swigCPtr = cPtr;
+ }
+
+ protected SWIGTYPE_p_switch_channel_state_t() {
+ swigCPtr = 0;
+ }
+
+ protected static long getCPtr(SWIGTYPE_p_switch_channel_state_t obj) {
+ return (obj == null) ? 0 : obj.swigCPtr;
+ }
+}
+
Added: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_channel_t.java
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_channel_t.java Tue Sep 25 09:21:17 2007
@@ -0,0 +1,26 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * 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_switch_channel_t {
+ private long swigCPtr;
+
+ protected SWIGTYPE_p_switch_channel_t(long cPtr, boolean futureUse) {
+ swigCPtr = cPtr;
+ }
+
+ protected SWIGTYPE_p_switch_channel_t() {
+ swigCPtr = 0;
+ }
+
+ protected static long getCPtr(SWIGTYPE_p_switch_channel_t obj) {
+ return (obj == null) ? 0 : obj.swigCPtr;
+ }
+}
+
Added: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_core_session_t.java
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_core_session_t.java Tue Sep 25 09:21:17 2007
@@ -0,0 +1,26 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * 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_switch_core_session_t {
+ private long swigCPtr;
+
+ protected SWIGTYPE_p_switch_core_session_t(long cPtr, boolean futureUse) {
+ swigCPtr = cPtr;
+ }
+
+ protected SWIGTYPE_p_switch_core_session_t() {
+ swigCPtr = 0;
+ }
+
+ protected static long getCPtr(SWIGTYPE_p_switch_core_session_t obj) {
+ return (obj == null) ? 0 : obj.swigCPtr;
+ }
+}
+
Added: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_input_args_t.java
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_input_args_t.java Tue Sep 25 09:21:17 2007
@@ -0,0 +1,26 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * 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_switch_input_args_t {
+ private long swigCPtr;
+
+ protected SWIGTYPE_p_switch_input_args_t(long cPtr, boolean futureUse) {
+ swigCPtr = cPtr;
+ }
+
+ protected SWIGTYPE_p_switch_input_args_t() {
+ swigCPtr = 0;
+ }
+
+ protected static long getCPtr(SWIGTYPE_p_switch_input_args_t obj) {
+ return (obj == null) ? 0 : obj.swigCPtr;
+ }
+}
+
Added: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_input_type_t.java
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_input_type_t.java Tue Sep 25 09:21:17 2007
@@ -0,0 +1,26 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * 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_switch_input_type_t {
+ private long swigCPtr;
+
+ protected SWIGTYPE_p_switch_input_type_t(long cPtr, boolean futureUse) {
+ swigCPtr = cPtr;
+ }
+
+ protected SWIGTYPE_p_switch_input_type_t() {
+ swigCPtr = 0;
+ }
+
+ protected static long getCPtr(SWIGTYPE_p_switch_input_type_t obj) {
+ return (obj == null) ? 0 : obj.swigCPtr;
+ }
+}
+
Added: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_status_t.java
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_switch_status_t.java Tue Sep 25 09:21:17 2007
@@ -0,0 +1,26 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * 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_switch_status_t {
+ private long swigCPtr;
+
+ protected SWIGTYPE_p_switch_status_t(long cPtr, boolean futureUse) {
+ swigCPtr = cPtr;
+ }
+
+ protected SWIGTYPE_p_switch_status_t() {
+ swigCPtr = 0;
+ }
+
+ protected static long getCPtr(SWIGTYPE_p_switch_status_t obj) {
+ return (obj == null) ? 0 : obj.swigCPtr;
+ }
+}
+
Added: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_void.java
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/SWIGTYPE_p_void.java Tue Sep 25 09:21:17 2007
@@ -0,0 +1,26 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * 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_void {
+ private long swigCPtr;
+
+ protected SWIGTYPE_p_void(long cPtr, boolean futureUse) {
+ swigCPtr = cPtr;
+ }
+
+ protected SWIGTYPE_p_void() {
+ swigCPtr = 0;
+ }
+
+ protected static long getCPtr(SWIGTYPE_p_void obj) {
+ return (obj == null) ? 0 : obj.swigCPtr;
+ }
+}
+
Added: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitch.java
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitch.java Tue Sep 25 09:21:17 2007
@@ -0,0 +1,53 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * 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 freeswitch {
+ public static void console_log(String level_str, String msg) {
+ freeswitchJNI.console_log(level_str, msg);
+ }
+
+ public static void console_clean_log(String msg) {
+ freeswitchJNI.console_clean_log(msg);
+ }
+
+ public static String api_execute(String cmd, String arg) {
+ return freeswitchJNI.api_execute(cmd, arg);
+ }
+
+ public static void api_reply_delete(String reply) {
+ freeswitchJNI.api_reply_delete(reply);
+ }
+
+ public static SWIGTYPE_p_switch_status_t process_callback_result(String raw_result, input_callback_state_t cb_state, SWIGTYPE_p_switch_core_session_t session) {
+ return new SWIGTYPE_p_switch_status_t(freeswitchJNI.process_callback_result(raw_result, input_callback_state_t.getCPtr(cb_state), cb_state, SWIGTYPE_p_switch_core_session_t.getCPtr(session)), true);
+ }
+
+ public static void bridge(CoreSession session_a, CoreSession session_b) {
+ freeswitchJNI.bridge(CoreSession.getCPtr(session_a), session_a, CoreSession.getCPtr(session_b), session_b);
+ }
+
+ public static SWIGTYPE_p_switch_status_t hanguphook(SWIGTYPE_p_switch_core_session_t session) {
+ return new SWIGTYPE_p_switch_status_t(freeswitchJNI.hanguphook(SWIGTYPE_p_switch_core_session_t.getCPtr(session)), true);
+ }
+
+ public static SWIGTYPE_p_switch_status_t dtmf_callback(SWIGTYPE_p_switch_core_session_t session, SWIGTYPE_p_void input, SWIGTYPE_p_switch_input_type_t itype, SWIGTYPE_p_void buf, long buflen) {
+ return new SWIGTYPE_p_switch_status_t(freeswitchJNI.dtmf_callback(SWIGTYPE_p_switch_core_session_t.getCPtr(session), SWIGTYPE_p_void.getCPtr(input), SWIGTYPE_p_switch_input_type_t.getCPtr(itype), SWIGTYPE_p_void.getCPtr(buf), buflen), true);
+ }
+
+ public static void setJavaVM(SWIGTYPE_p_JavaVM value) {
+ freeswitchJNI.javaVM_set(SWIGTYPE_p_JavaVM.getCPtr(value));
+ }
+
+ public static SWIGTYPE_p_JavaVM getJavaVM() {
+ long cPtr = freeswitchJNI.javaVM_get();
+ return (cPtr == 0) ? null : new SWIGTYPE_p_JavaVM(cPtr, false);
+ }
+
+}
Added: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java Tue Sep 25 09:21:17 2007
@@ -0,0 +1,85 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+package org.freeswitch.swig;
+
+class freeswitchJNI {
+ public final static native void console_log(String jarg1, String jarg2);
+ public final static native void console_clean_log(String jarg1);
+ public final static native String api_execute(String jarg1, String jarg2);
+ public final static native void api_reply_delete(String jarg1);
+ public final static native long process_callback_result(String jarg1, long jarg2, input_callback_state_t jarg2_, long jarg3);
+ public final static native void input_callback_state_t_function_set(long jarg1, input_callback_state_t jarg1_, long jarg2);
+ public final static native long input_callback_state_t_function_get(long jarg1, input_callback_state_t jarg1_);
+ public final static native void input_callback_state_t_threadState_set(long jarg1, input_callback_state_t jarg1_, long jarg2);
+ public final static native long input_callback_state_t_threadState_get(long jarg1, input_callback_state_t jarg1_);
+ public final static native void input_callback_state_t_extra_set(long jarg1, input_callback_state_t jarg1_, long jarg2);
+ public final static native long input_callback_state_t_extra_get(long jarg1, input_callback_state_t jarg1_);
+ public final static native void input_callback_state_t_funcargs_set(long jarg1, input_callback_state_t jarg1_, String jarg2);
+ public final static native String input_callback_state_t_funcargs_get(long jarg1, input_callback_state_t jarg1_);
+ public final static native long new_input_callback_state_t();
+ public final static native void delete_input_callback_state_t(long jarg1);
+ 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 delete_CoreSession(long jarg1);
+ public final static native void CoreSession_session_set(long jarg1, CoreSession jarg1_, long jarg2);
+ public final static native long CoreSession_session_get(long jarg1, CoreSession jarg1_);
+ public final static native void CoreSession_channel_set(long jarg1, CoreSession jarg1_, long jarg2);
+ public final static native long CoreSession_channel_get(long jarg1, CoreSession jarg1_);
+ public final static native void CoreSession_flags_set(long jarg1, CoreSession jarg1_, long jarg2);
+ public final static native long CoreSession_flags_get(long jarg1, CoreSession jarg1_);
+ public final static native void CoreSession_cb_state_set(long jarg1, CoreSession jarg1_, long jarg2, input_callback_state_t jarg2_);
+ public final static native long CoreSession_cb_state_get(long jarg1, CoreSession jarg1_);
+ public final static native void CoreSession_hook_state_set(long jarg1, CoreSession jarg1_, long jarg2);
+ public final static native long CoreSession_hook_state_get(long jarg1, CoreSession jarg1_);
+ public final static native int CoreSession_answer(long jarg1, CoreSession jarg1_);
+ public final static native int CoreSession_preAnswer(long jarg1, CoreSession jarg1_);
+ public final static native void CoreSession_hangup(long jarg1, CoreSession jarg1_, String jarg2);
+ public final static native void CoreSession_setVariable(long jarg1, CoreSession jarg1_, String jarg2, String jarg3);
+ public final static native String CoreSession_getVariable(long jarg1, CoreSession jarg1_, String jarg2);
+ public final static native int CoreSession_recordFile(long jarg1, CoreSession jarg1_, String jarg2, int jarg3, int jarg4, int jarg5);
+ public final static native void CoreSession_setCallerData(long jarg1, CoreSession jarg1_, String jarg2, String jarg3);
+ public final static native int CoreSession_originate(long jarg1, CoreSession jarg1_, long jarg2, CoreSession jarg2_, String jarg3, int jarg4);
+ public final static native void CoreSession_setDTMFCallback(long jarg1, CoreSession jarg1_, long jarg2, String jarg3);
+ public final static native int CoreSession_speak(long jarg1, CoreSession jarg1_, String jarg2);
+ public final static native void CoreSession_set_tts_parms(long jarg1, CoreSession jarg1_, String jarg2, String jarg3);
+ public final static native int CoreSession_collectDigits(long jarg1, CoreSession jarg1_, int jarg2);
+ public final static native int CoreSession_getDigits(long jarg1, CoreSession jarg1_, byte[] jarg2, int jarg3, int jarg4, String jarg5, byte[] jarg6, int jarg7);
+ public final static native int CoreSession_transfer(long jarg1, CoreSession jarg1_, String jarg2, String jarg3, String jarg4);
+ public final static native int CoreSession_playAndGetDigits(long jarg1, CoreSession jarg1_, int jarg2, int jarg3, int jarg4, int jarg5, String jarg6, String jarg7, String jarg8, byte[] jarg9, String jarg10);
+ public final static native int CoreSession_streamFile(long jarg1, CoreSession jarg1_, String jarg2, int jarg3);
+ public final static native int CoreSession_flushEvents(long jarg1, CoreSession jarg1_);
+ public final static native int CoreSession_flushDigits(long jarg1, CoreSession jarg1_);
+ public final static native int CoreSession_setAutoHangup(long jarg1, CoreSession jarg1_, boolean jarg2);
+ public final static native void CoreSession_setHangupHook(long jarg1, CoreSession jarg1_, long jarg2);
+ public final static native boolean CoreSession_ready(long jarg1, CoreSession jarg1_);
+ public final static native void CoreSession_execute(long jarg1, CoreSession jarg1_, String jarg2, String jarg3);
+ public final static native boolean CoreSession_begin_allow_threads(long jarg1, CoreSession jarg1_);
+ public final static native boolean CoreSession_end_allow_threads(long jarg1, CoreSession jarg1_);
+ public final static native String CoreSession_get_uuid(long jarg1, CoreSession jarg1_);
+ public final static native long CoreSession_get_cb_args(long jarg1, CoreSession jarg1_);
+ public final static native void CoreSession_check_hangup_hook(long jarg1, CoreSession jarg1_);
+ public final static native long CoreSession_run_dtmf_callback(long jarg1, CoreSession jarg1_, long jarg2, long jarg3);
+ public final static native void bridge(long jarg1, CoreSession jarg1_, long jarg2, CoreSession jarg2_);
+ public final static native long hanguphook(long jarg1);
+ public final static native long dtmf_callback(long jarg1, long jarg2, long jarg3, long jarg4, long jarg5);
+ public final static native void javaVM_set(long jarg1);
+ public final static native long javaVM_get();
+ public final static native long new_JavaSession__SWIG_0();
+ public final static native long new_JavaSession__SWIG_1(String jarg1);
+ public final static native long new_JavaSession__SWIG_2(long jarg1);
+ public final static native void delete_JavaSession(long jarg1);
+ public final static native boolean JavaSession_begin_allow_threads(long jarg1, JavaSession jarg1_);
+ public final static native boolean JavaSession_end_allow_threads(long jarg1, JavaSession jarg1_);
+ public final static native void JavaSession_setDTMFCallback(long jarg1, JavaSession jarg1_, org.freeswitch.DTMFCallback jarg2, String jarg3);
+ public final static native void JavaSession_setHangupHook(long jarg1, JavaSession jarg1_, org.freeswitch.HangupHook jarg2);
+ public final static native void JavaSession_check_hangup_hook(long jarg1, JavaSession jarg1_);
+ public final static native long JavaSession_run_dtmf_callback(long jarg1, JavaSession jarg1_, long jarg2, long jarg3);
+ public final static native long SWIGJavaSessionUpcast(long jarg1);
+}
Added: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/input_callback_state_t.java
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/input_callback_state_t.java Tue Sep 25 09:21:17 2007
@@ -0,0 +1,75 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * 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 input_callback_state_t {
+ private long swigCPtr;
+ protected boolean swigCMemOwn;
+
+ protected input_callback_state_t(long cPtr, boolean cMemoryOwn) {
+ swigCMemOwn = cMemoryOwn;
+ swigCPtr = cPtr;
+ }
+
+ protected static long getCPtr(input_callback_state_t obj) {
+ return (obj == null) ? 0 : obj.swigCPtr;
+ }
+
+ protected void finalize() {
+ delete();
+ }
+
+ public synchronized void delete() {
+ if(swigCPtr != 0 && swigCMemOwn) {
+ swigCMemOwn = false;
+ freeswitchJNI.delete_input_callback_state_t(swigCPtr);
+ }
+ swigCPtr = 0;
+ }
+
+ public void setFunction(SWIGTYPE_p_void value) {
+ freeswitchJNI.input_callback_state_t_function_set(swigCPtr, this, SWIGTYPE_p_void.getCPtr(value));
+ }
+
+ public SWIGTYPE_p_void getFunction() {
+ long cPtr = freeswitchJNI.input_callback_state_t_function_get(swigCPtr, this);
+ return (cPtr == 0) ? null : new SWIGTYPE_p_void(cPtr, false);
+ }
+
+ public void setThreadState(SWIGTYPE_p_void value) {
+ freeswitchJNI.input_callback_state_t_threadState_set(swigCPtr, this, SWIGTYPE_p_void.getCPtr(value));
+ }
+
+ public SWIGTYPE_p_void getThreadState() {
+ long cPtr = freeswitchJNI.input_callback_state_t_threadState_get(swigCPtr, this);
+ return (cPtr == 0) ? null : new SWIGTYPE_p_void(cPtr, false);
+ }
+
+ public void setExtra(SWIGTYPE_p_void value) {
+ freeswitchJNI.input_callback_state_t_extra_set(swigCPtr, this, SWIGTYPE_p_void.getCPtr(value));
+ }
+
+ public SWIGTYPE_p_void getExtra() {
+ long cPtr = freeswitchJNI.input_callback_state_t_extra_get(swigCPtr, this);
+ return (cPtr == 0) ? null : new SWIGTYPE_p_void(cPtr, false);
+ }
+
+ public void setFuncargs(String value) {
+ freeswitchJNI.input_callback_state_t_funcargs_set(swigCPtr, this, value);
+ }
+
+ public String getFuncargs() {
+ return freeswitchJNI.input_callback_state_t_funcargs_get(swigCPtr, this);
+ }
+
+ public input_callback_state_t() {
+ this(freeswitchJNI.new_input_callback_state_t(), true);
+ }
+
+}
Added: freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/session_flag_t.java
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/src/org/freeswitch/swig/session_flag_t.java Tue Sep 25 09:21:17 2007
@@ -0,0 +1,50 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * 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 enum session_flag_t {
+ S_HUP(freeswitchJNI.S_HUP_get()),
+ S_FREE(freeswitchJNI.S_FREE_get()),
+ S_RDLOCK(freeswitchJNI.S_RDLOCK_get());
+
+ public final int swigValue() {
+ return swigValue;
+ }
+
+ public static session_flag_t swigToEnum(int swigValue) {
+ session_flag_t[] swigValues = session_flag_t.class.getEnumConstants();
+ if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue)
+ return swigValues[swigValue];
+ for (session_flag_t swigEnum : swigValues)
+ if (swigEnum.swigValue == swigValue)
+ return swigEnum;
+ throw new IllegalArgumentException("No enum " + session_flag_t.class + " with value " + swigValue);
+ }
+
+ private session_flag_t() {
+ this.swigValue = SwigNext.next++;
+ }
+
+ private session_flag_t(int swigValue) {
+ this.swigValue = swigValue;
+ SwigNext.next = swigValue+1;
+ }
+
+ private session_flag_t(session_flag_t swigEnum) {
+ this.swigValue = swigEnum.swigValue;
+ SwigNext.next = this.swigValue+1;
+ }
+
+ private final int swigValue;
+
+ private static class SwigNext {
+ private static int next = 0;
+ }
+}
+
Added: freeswitch/trunk/src/mod/languages/mod_java/switch_swig_wrap.cpp
==============================================================================
--- (empty file)
+++ freeswitch/trunk/src/mod/languages/mod_java/switch_swig_wrap.cpp Tue Sep 25 09:21:17 2007
@@ -0,0 +1,1529 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.31
+ *
+ * This file is not intended to be easily readable and contains a number of
+ * coding conventions designed to improve portability and efficiency. Do not make
+ * changes to this file unless you know what you are doing--modify the SWIG
+ * interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+
+#ifdef __cplusplus
+template<class T> class SwigValueWrapper {
+ T *tt;
+public:
+ SwigValueWrapper() : tt(0) { }
+ SwigValueWrapper(const SwigValueWrapper<T>& rhs) : tt(new T(*rhs.tt)) { }
+ SwigValueWrapper(const T& t) : tt(new T(t)) { }
+ ~SwigValueWrapper() { delete tt; }
+ SwigValueWrapper& operator=(const T& t) { delete tt; tt = new T(t); return *this; }
+ operator T&() const { return *tt; }
+ T *operator&() { return tt; }
+private:
+ SwigValueWrapper& operator=(const SwigValueWrapper<T>& rhs);
+};
+#endif
+
+/* -----------------------------------------------------------------------------
+ * This section contains generic SWIG labels for method/variable
+ * declarations/attributes, and other compiler dependent labels.
+ * ----------------------------------------------------------------------------- */
+
+/* template workaround for compilers that cannot correctly implement the C++ standard */
+#ifndef SWIGTEMPLATEDISAMBIGUATOR
+# if defined(__SUNPRO_CC)
+# if (__SUNPRO_CC <= 0x560)
+# define SWIGTEMPLATEDISAMBIGUATOR template
+# else
+# define SWIGTEMPLATEDISAMBIGUATOR
+# endif
+# else
+# define SWIGTEMPLATEDISAMBIGUATOR
+# endif
+#endif
+
+/* inline attribute */
+#ifndef SWIGINLINE
+# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
+# define SWIGINLINE inline
+# else
+# define SWIGINLINE
+# endif
+#endif
+
+/* attribute recognised by some compilers to avoid 'unused' warnings */
+#ifndef SWIGUNUSED
+# if defined(__GNUC__)
+# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+# define SWIGUNUSED __attribute__ ((__unused__))
+# else
+# define SWIGUNUSED
+# endif
+# elif defined(__ICC)
+# define SWIGUNUSED __attribute__ ((__unused__))
+# else
+# define SWIGUNUSED
+# endif
+#endif
+
+#ifndef SWIGUNUSEDPARM
+# ifdef __cplusplus
+# define SWIGUNUSEDPARM(p)
+# else
+# define SWIGUNUSEDPARM(p) p SWIGUNUSED
+# endif
+#endif
+
+/* internal SWIG method */
+#ifndef SWIGINTERN
+# define SWIGINTERN static SWIGUNUSED
+#endif
+
+/* internal inline SWIG method */
+#ifndef SWIGINTERNINLINE
+# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE
+#endif
+
+/* exporting methods */
+#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+# ifndef GCC_HASCLASSVISIBILITY
+# define GCC_HASCLASSVISIBILITY
+# endif
+#endif
+
+#ifndef SWIGEXPORT
+# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+# if defined(STATIC_LINKED)
+# define SWIGEXPORT
+# else
+# define SWIGEXPORT __declspec(dllexport)
+# endif
+# else
+# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
+# define SWIGEXPORT __attribute__ ((visibility("default")))
+# else
+# define SWIGEXPORT
+# endif
+# endif
+#endif
+
+/* calling conventions for Windows */
+#ifndef SWIGSTDCALL
+# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+# define SWIGSTDCALL __stdcall
+# else
+# define SWIGSTDCALL
+# endif
+#endif
+
+/* Deal with Microsoft's attempt at deprecating C standard runtime functions */
+#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
+# define _CRT_SECURE_NO_DEPRECATE
+#endif
+
+
+/* Fix for jlong on some versions of gcc on Windows */
+#if defined(__GNUC__) && !defined(__INTELC__)
+ typedef long long __int64;
+#endif
+
+/* Fix for jlong on 64-bit x86 Solaris */
+#if defined(__x86_64)
+# ifdef _LP64
+# undef _LP64
+# endif
+#endif
+
+#include <jni.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+/* Support for throwing Java exceptions */
+typedef enum {
+ SWIG_JavaOutOfMemoryError = 1,
+ SWIG_JavaIOException,
+ SWIG_JavaRuntimeException,
+ SWIG_JavaIndexOutOfBoundsException,
+ SWIG_JavaArithmeticException,
+ SWIG_JavaIllegalArgumentException,
+ SWIG_JavaNullPointerException,
+ SWIG_JavaDirectorPureVirtual,
+ SWIG_JavaUnknownError
+} SWIG_JavaExceptionCodes;
+
+typedef struct {
+ SWIG_JavaExceptionCodes code;
+ const char *java_exception;
+} SWIG_JavaExceptions_t;
+
+
+static void SWIGUNUSED SWIG_JavaThrowException(JNIEnv *jenv, SWIG_JavaExceptionCodes code, const char *msg) {
+ jclass excep;
+ static const SWIG_JavaExceptions_t java_exceptions[] = {
+ { SWIG_JavaOutOfMemoryError, "java/lang/OutOfMemoryError" },
+ { SWIG_JavaIOException, "java/io/IOException" },
+ { SWIG_JavaRuntimeException, "java/lang/RuntimeException" },
+ { SWIG_JavaIndexOutOfBoundsException, "java/lang/IndexOutOfBoundsException" },
+ { SWIG_JavaArithmeticException, "java/lang/ArithmeticException" },
+ { SWIG_JavaIllegalArgumentException, "java/lang/IllegalArgumentException" },
+ { SWIG_JavaNullPointerException, "java/lang/NullPointerException" },
+ { SWIG_JavaDirectorPureVirtual, "java/lang/RuntimeException" },
+ { SWIG_JavaUnknownError, "java/lang/UnknownError" },
+ { (SWIG_JavaExceptionCodes)0, "java/lang/UnknownError" } };
+ const SWIG_JavaExceptions_t *except_ptr = java_exceptions;
+
+ while (except_ptr->code != code && except_ptr->code)
+ except_ptr++;
+
+ jenv->ExceptionClear();
+ excep = jenv->FindClass(except_ptr->java_exception);
+ if (excep)
+ jenv->ThrowNew(excep, msg);
+}
+
+
+/* Contract support */
+
+#define SWIG_contract_assert(nullreturn, expr, msg) if (!(expr)) {SWIG_JavaThrowException(jenv, SWIG_JavaIllegalArgumentException, msg); return nullreturn; } else
+
+
+#include "switch_cpp.h"
+#include "freeswitch_java.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_console_1log(JNIEnv *jenv, jclass jcls, jstring jarg1, jstring jarg2) {
+ char *arg1 = (char *) 0 ;
+ char *arg2 = (char *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = 0;
+ if (jarg1) {
+ arg1 = (char *)jenv->GetStringUTFChars(jarg1, 0);
+ if (!arg1) return ;
+ }
+ arg2 = 0;
+ if (jarg2) {
+ arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
+ if (!arg2) return ;
+ }
+ console_log(arg1,arg2);
+ if (arg1) jenv->ReleaseStringUTFChars(jarg1, (const char *)arg1);
+ if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_console_1clean_1log(JNIEnv *jenv, jclass jcls, jstring jarg1) {
+ char *arg1 = (char *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = 0;
+ if (jarg1) {
+ arg1 = (char *)jenv->GetStringUTFChars(jarg1, 0);
+ if (!arg1) return ;
+ }
+ console_clean_log(arg1);
+ if (arg1) jenv->ReleaseStringUTFChars(jarg1, (const char *)arg1);
+}
+
+
+SWIGEXPORT jstring JNICALL Java_org_freeswitch_swig_freeswitchJNI_api_1execute(JNIEnv *jenv, jclass jcls, jstring jarg1, jstring jarg2) {
+ jstring jresult = 0 ;
+ char *arg1 = (char *) 0 ;
+ char *arg2 = (char *) 0 ;
+ char *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = 0;
+ if (jarg1) {
+ arg1 = (char *)jenv->GetStringUTFChars(jarg1, 0);
+ if (!arg1) return 0;
+ }
+ arg2 = 0;
+ if (jarg2) {
+ arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
+ if (!arg2) return 0;
+ }
+ result = (char *)api_execute(arg1,arg2);
+ if(result) jresult = jenv->NewStringUTF((const char *)result);
+ if (arg1) jenv->ReleaseStringUTFChars(jarg1, (const char *)arg1);
+ if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_api_1reply_1delete(JNIEnv *jenv, jclass jcls, jstring jarg1) {
+ char *arg1 = (char *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = 0;
+ if (jarg1) {
+ arg1 = (char *)jenv->GetStringUTFChars(jarg1, 0);
+ if (!arg1) return ;
+ }
+ api_reply_delete(arg1);
+ if (arg1) jenv->ReleaseStringUTFChars(jarg1, (const char *)arg1);
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_process_1callback_1result(JNIEnv *jenv, jclass jcls, jstring jarg1, jlong jarg2, jobject jarg2_, jlong jarg3) {
+ jlong jresult = 0 ;
+ char *arg1 = (char *) 0 ;
+ input_callback_state *arg2 = (input_callback_state *) 0 ;
+ switch_core_session_t *arg3 = (switch_core_session_t *) 0 ;
+ switch_status_t result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg2_;
+ arg1 = 0;
+ if (jarg1) {
+ arg1 = (char *)jenv->GetStringUTFChars(jarg1, 0);
+ if (!arg1) return 0;
+ }
+ arg2 = *(input_callback_state **)&jarg2;
+ arg3 = *(switch_core_session_t **)&jarg3;
+ result = process_callback_result(arg1,arg2,arg3);
+ *(switch_status_t **)&jresult = new switch_status_t((switch_status_t &)result);
+ if (arg1) jenv->ReleaseStringUTFChars(jarg1, (const char *)arg1);
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_input_1callback_1state_1t_1function_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
+ input_callback_state_t *arg1 = (input_callback_state_t *) 0 ;
+ void *arg2 = (void *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(input_callback_state_t **)&jarg1;
+ arg2 = *(void **)&jarg2;
+ if (arg1) (arg1)->function = arg2;
+
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_input_1callback_1state_1t_1function_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jlong jresult = 0 ;
+ input_callback_state_t *arg1 = (input_callback_state_t *) 0 ;
+ void *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(input_callback_state_t **)&jarg1;
+ result = (void *) ((arg1)->function);
+ *(void **)&jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_input_1callback_1state_1t_1threadState_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
+ input_callback_state_t *arg1 = (input_callback_state_t *) 0 ;
+ void *arg2 = (void *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(input_callback_state_t **)&jarg1;
+ arg2 = *(void **)&jarg2;
+ if (arg1) (arg1)->threadState = arg2;
+
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_input_1callback_1state_1t_1threadState_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jlong jresult = 0 ;
+ input_callback_state_t *arg1 = (input_callback_state_t *) 0 ;
+ void *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(input_callback_state_t **)&jarg1;
+ result = (void *) ((arg1)->threadState);
+ *(void **)&jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_input_1callback_1state_1t_1extra_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
+ input_callback_state_t *arg1 = (input_callback_state_t *) 0 ;
+ void *arg2 = (void *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(input_callback_state_t **)&jarg1;
+ arg2 = *(void **)&jarg2;
+ if (arg1) (arg1)->extra = arg2;
+
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_input_1callback_1state_1t_1extra_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jlong jresult = 0 ;
+ input_callback_state_t *arg1 = (input_callback_state_t *) 0 ;
+ void *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(input_callback_state_t **)&jarg1;
+ result = (void *) ((arg1)->extra);
+ *(void **)&jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_input_1callback_1state_1t_1funcargs_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) {
+ input_callback_state_t *arg1 = (input_callback_state_t *) 0 ;
+ char *arg2 = (char *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(input_callback_state_t **)&jarg1;
+ arg2 = 0;
+ if (jarg2) {
+ arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
+ if (!arg2) return ;
+ }
+ {
+ if (arg1->funcargs) delete [] arg1->funcargs;
+ if (arg2) {
+ arg1->funcargs = (char *) (new char[strlen((const char *)arg2)+1]);
+ strcpy((char *)arg1->funcargs, (const char *)arg2);
+ } else {
+ arg1->funcargs = 0;
+ }
+ }
+ if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
+}
+
+
+SWIGEXPORT jstring JNICALL Java_org_freeswitch_swig_freeswitchJNI_input_1callback_1state_1t_1funcargs_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jstring jresult = 0 ;
+ input_callback_state_t *arg1 = (input_callback_state_t *) 0 ;
+ char *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(input_callback_state_t **)&jarg1;
+ result = (char *) ((arg1)->funcargs);
+ if(result) jresult = jenv->NewStringUTF((const char *)result);
+ return jresult;
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_new_1input_1callback_1state_1t(JNIEnv *jenv, jclass jcls) {
+ jlong jresult = 0 ;
+ input_callback_state_t *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ result = (input_callback_state_t *)new input_callback_state_t();
+ *(input_callback_state_t **)&jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_delete_1input_1callback_1state_1t(JNIEnv *jenv, jclass jcls, jlong jarg1) {
+ input_callback_state_t *arg1 = (input_callback_state_t *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(input_callback_state_t **)&jarg1;
+ delete arg1;
+
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_freeswitch_swig_freeswitchJNI_S_1HUP_1get(JNIEnv *jenv, jclass jcls) {
+ jint jresult = 0 ;
+ session_flag_t result;
+
+ (void)jenv;
+ (void)jcls;
+ result = (session_flag_t)S_HUP;
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_freeswitch_swig_freeswitchJNI_S_1FREE_1get(JNIEnv *jenv, jclass jcls) {
+ jint jresult = 0 ;
+ session_flag_t result;
+
+ (void)jenv;
+ (void)jcls;
+ result = (session_flag_t)S_FREE;
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_freeswitch_swig_freeswitchJNI_S_1RDLOCK_1get(JNIEnv *jenv, jclass jcls) {
+ jint jresult = 0 ;
+ session_flag_t result;
+
+ (void)jenv;
+ (void)jcls;
+ result = (session_flag_t)S_RDLOCK;
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_delete_1CoreSession(JNIEnv *jenv, jclass jcls, jlong jarg1) {
+ CoreSession *arg1 = (CoreSession *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(CoreSession **)&jarg1;
+ delete arg1;
+
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1session_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ switch_core_session_t *arg2 = (switch_core_session_t *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ arg2 = *(switch_core_session_t **)&jarg2;
+ if (arg1) (arg1)->session = arg2;
+
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1session_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jlong jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ switch_core_session_t *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ result = (switch_core_session_t *) ((arg1)->session);
+ *(switch_core_session_t **)&jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1channel_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ switch_channel_t *arg2 = (switch_channel_t *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ arg2 = *(switch_channel_t **)&jarg2;
+ if (arg1) (arg1)->channel = arg2;
+
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1channel_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jlong jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ switch_channel_t *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ result = (switch_channel_t *) ((arg1)->channel);
+ *(switch_channel_t **)&jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1flags_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ unsigned int arg2 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ arg2 = (unsigned int)jarg2;
+ if (arg1) (arg1)->flags = arg2;
+
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1flags_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jlong jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ unsigned int result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ result = (unsigned int) ((arg1)->flags);
+ jresult = (jlong)result;
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1cb_1state_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) {
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ input_callback_state *arg2 = (input_callback_state *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ (void)jarg2_;
+ arg1 = *(CoreSession **)&jarg1;
+ arg2 = *(input_callback_state **)&jarg2;
+ if (arg1) (arg1)->cb_state = *arg2;
+
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1cb_1state_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jlong jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ input_callback_state *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ result = (input_callback_state *)& ((arg1)->cb_state);
+ *(input_callback_state **)&jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1hook_1state_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ switch_channel_state_t arg2 ;
+ switch_channel_state_t *argp2 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ argp2 = *(switch_channel_state_t **)&jarg2;
+ if (!argp2) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null switch_channel_state_t");
+ return ;
+ }
+ arg2 = *argp2;
+ if (arg1) (arg1)->hook_state = arg2;
+
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1hook_1state_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jlong jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ switch_channel_state_t result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ result = ((arg1)->hook_state);
+ *(switch_channel_state_t **)&jresult = new switch_channel_state_t((switch_channel_state_t &)result);
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1answer(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jint jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ result = (int)(arg1)->answer();
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1preAnswer(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jint jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ result = (int)(arg1)->preAnswer();
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1hangup(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) {
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ char *arg2 = (char *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ arg2 = 0;
+ if (jarg2) {
+ arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
+ if (!arg2) return ;
+ }
+ (arg1)->hangup(arg2);
+ if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1setVariable(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3) {
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ char *arg2 = (char *) 0 ;
+ char *arg3 = (char *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ arg2 = 0;
+ if (jarg2) {
+ arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
+ if (!arg2) return ;
+ }
+ arg3 = 0;
+ if (jarg3) {
+ arg3 = (char *)jenv->GetStringUTFChars(jarg3, 0);
+ if (!arg3) return ;
+ }
+ (arg1)->setVariable(arg2,arg3);
+ if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
+ if (arg3) jenv->ReleaseStringUTFChars(jarg3, (const char *)arg3);
+}
+
+
+SWIGEXPORT jstring JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1getVariable(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) {
+ jstring jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ char *arg2 = (char *) 0 ;
+ char *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ arg2 = 0;
+ if (jarg2) {
+ arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
+ if (!arg2) return 0;
+ }
+ result = (char *)(arg1)->getVariable(arg2);
+ if(result) jresult = jenv->NewStringUTF((const char *)result);
+ if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1recordFile(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jint jarg3, jint jarg4, jint jarg5) {
+ jint jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ char *arg2 = (char *) 0 ;
+ int arg3 = (int) 0 ;
+ int arg4 = (int) 0 ;
+ int arg5 = (int) 0 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ arg2 = 0;
+ if (jarg2) {
+ arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
+ if (!arg2) return 0;
+ }
+ arg3 = (int)jarg3;
+ arg4 = (int)jarg4;
+ arg5 = (int)jarg5;
+ result = (int)(arg1)->recordFile(arg2,arg3,arg4,arg5);
+ jresult = (jint)result;
+ if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1setCallerData(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3) {
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ char *arg2 = (char *) 0 ;
+ char *arg3 = (char *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ arg2 = 0;
+ if (jarg2) {
+ arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
+ if (!arg2) return ;
+ }
+ arg3 = 0;
+ if (jarg3) {
+ arg3 = (char *)jenv->GetStringUTFChars(jarg3, 0);
+ if (!arg3) return ;
+ }
+ (arg1)->setCallerData(arg2,arg3);
+ if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
+ if (arg3) jenv->ReleaseStringUTFChars(jarg3, (const char *)arg3);
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1originate(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jstring jarg3, jint jarg4) {
+ jint jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ CoreSession *arg2 = (CoreSession *) 0 ;
+ char *arg3 = (char *) 0 ;
+ int arg4 = (int) 60 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ (void)jarg2_;
+ arg1 = *(CoreSession **)&jarg1;
+ arg2 = *(CoreSession **)&jarg2;
+ arg3 = 0;
+ if (jarg3) {
+ arg3 = (char *)jenv->GetStringUTFChars(jarg3, 0);
+ if (!arg3) return 0;
+ }
+ arg4 = (int)jarg4;
+ result = (int)(arg1)->originate(arg2,arg3,arg4);
+ jresult = (jint)result;
+ if (arg3) jenv->ReleaseStringUTFChars(jarg3, (const char *)arg3);
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1setDTMFCallback(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jstring jarg3) {
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ void *arg2 = (void *) 0 ;
+ char *arg3 = (char *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ arg2 = *(void **)&jarg2;
+ arg3 = 0;
+ if (jarg3) {
+ arg3 = (char *)jenv->GetStringUTFChars(jarg3, 0);
+ if (!arg3) return ;
+ }
+ (arg1)->setDTMFCallback(arg2,arg3);
+ if (arg3) jenv->ReleaseStringUTFChars(jarg3, (const char *)arg3);
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1speak(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) {
+ jint jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ char *arg2 = (char *) 0 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ arg2 = 0;
+ if (jarg2) {
+ arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
+ if (!arg2) return 0;
+ }
+ result = (int)(arg1)->speak(arg2);
+ jresult = (jint)result;
+ if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1set_1tts_1parms(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3) {
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ char *arg2 = (char *) 0 ;
+ char *arg3 = (char *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ arg2 = 0;
+ if (jarg2) {
+ arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
+ if (!arg2) return ;
+ }
+ arg3 = 0;
+ if (jarg3) {
+ arg3 = (char *)jenv->GetStringUTFChars(jarg3, 0);
+ if (!arg3) return ;
+ }
+ (arg1)->set_tts_parms(arg2,arg3);
+ if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
+ if (arg3) jenv->ReleaseStringUTFChars(jarg3, (const char *)arg3);
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1collectDigits(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) {
+ jint jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ int arg2 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ arg2 = (int)jarg2;
+ result = (int)(arg1)->collectDigits(arg2);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1getDigits(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jbyteArray jarg2, jint jarg3, jint jarg4, jstring jarg5, jbyteArray jarg6, jint jarg7) {
+ jint jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ char *arg2 = (char *) 0 ;
+ int arg3 ;
+ int arg4 ;
+ char *arg5 = (char *) 0 ;
+ char *arg6 = (char *) 0 ;
+ int arg7 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ {
+ arg2 = (char*) jenv->GetByteArrayElements(jarg2, 0);
+ if (!arg2) return 0;
+ }
+ arg3 = (int)jarg3;
+ arg4 = (int)jarg4;
+ arg5 = 0;
+ if (jarg5) {
+ arg5 = (char *)jenv->GetStringUTFChars(jarg5, 0);
+ if (!arg5) return 0;
+ }
+ {
+ arg6 = (char*) jenv->GetByteArrayElements(jarg6, 0);
+ if (!arg6) return 0;
+ }
+ arg7 = (int)jarg7;
+ result = (int)(arg1)->getDigits(arg2,arg3,arg4,arg5,arg6,arg7);
+ jresult = (jint)result;
+ {
+ jenv->ReleaseByteArrayElements(jarg2, (jbyte*) arg2, 0);
+ }
+ {
+ jenv->ReleaseByteArrayElements(jarg6, (jbyte*) arg6, 0);
+ }
+
+ if (arg5) jenv->ReleaseStringUTFChars(jarg5, (const char *)arg5);
+
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1transfer(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3, jstring jarg4) {
+ jint jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ char *arg2 = (char *) 0 ;
+ char *arg3 = (char *) 0 ;
+ char *arg4 = (char *) 0 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ arg2 = 0;
+ if (jarg2) {
+ arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
+ if (!arg2) return 0;
+ }
+ arg3 = 0;
+ if (jarg3) {
+ arg3 = (char *)jenv->GetStringUTFChars(jarg3, 0);
+ if (!arg3) return 0;
+ }
+ arg4 = 0;
+ if (jarg4) {
+ arg4 = (char *)jenv->GetStringUTFChars(jarg4, 0);
+ if (!arg4) return 0;
+ }
+ result = (int)(arg1)->transfer(arg2,arg3,arg4);
+ jresult = (jint)result;
+ if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
+ if (arg3) jenv->ReleaseStringUTFChars(jarg3, (const char *)arg3);
+ if (arg4) jenv->ReleaseStringUTFChars(jarg4, (const char *)arg4);
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1playAndGetDigits(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2, jint jarg3, jint jarg4, jint jarg5, jstring jarg6, jstring jarg7, jstring jarg8, jbyteArray jarg9, jstring jarg10) {
+ jint jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ int arg2 ;
+ int arg3 ;
+ int arg4 ;
+ int arg5 ;
+ char *arg6 = (char *) 0 ;
+ char *arg7 = (char *) 0 ;
+ char *arg8 = (char *) 0 ;
+ char *arg9 = (char *) 0 ;
+ char *arg10 = (char *) 0 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ arg2 = (int)jarg2;
+ arg3 = (int)jarg3;
+ arg4 = (int)jarg4;
+ arg5 = (int)jarg5;
+ arg6 = 0;
+ if (jarg6) {
+ arg6 = (char *)jenv->GetStringUTFChars(jarg6, 0);
+ if (!arg6) return 0;
+ }
+ arg7 = 0;
+ if (jarg7) {
+ arg7 = (char *)jenv->GetStringUTFChars(jarg7, 0);
+ if (!arg7) return 0;
+ }
+ arg8 = 0;
+ if (jarg8) {
+ arg8 = (char *)jenv->GetStringUTFChars(jarg8, 0);
+ if (!arg8) return 0;
+ }
+ {
+ arg9 = (char*) jenv->GetByteArrayElements(jarg9, 0);
+ if (!arg9) return 0;
+ }
+ arg10 = 0;
+ if (jarg10) {
+ arg10 = (char *)jenv->GetStringUTFChars(jarg10, 0);
+ if (!arg10) return 0;
+ }
+ result = (int)(arg1)->playAndGetDigits(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10);
+ jresult = (jint)result;
+ {
+ jenv->ReleaseByteArrayElements(jarg9, (jbyte*) arg9, 0);
+ }
+ if (arg6) jenv->ReleaseStringUTFChars(jarg6, (const char *)arg6);
+ if (arg7) jenv->ReleaseStringUTFChars(jarg7, (const char *)arg7);
+ if (arg8) jenv->ReleaseStringUTFChars(jarg8, (const char *)arg8);
+
+ if (arg10) jenv->ReleaseStringUTFChars(jarg10, (const char *)arg10);
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1streamFile(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jint jarg3) {
+ jint jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ char *arg2 = (char *) 0 ;
+ int arg3 = (int) 0 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ arg2 = 0;
+ if (jarg2) {
+ arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
+ if (!arg2) return 0;
+ }
+ arg3 = (int)jarg3;
+ result = (int)(arg1)->streamFile(arg2,arg3);
+ jresult = (jint)result;
+ if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1flushEvents(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jint jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ result = (int)(arg1)->flushEvents();
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1flushDigits(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jint jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ result = (int)(arg1)->flushDigits();
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1setAutoHangup(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jboolean jarg2) {
+ jint jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ bool arg2 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ arg2 = jarg2 ? true : false;
+ result = (int)(arg1)->setAutoHangup(arg2);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1setHangupHook(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ void *arg2 = (void *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ arg2 = *(void **)&jarg2;
+ (arg1)->setHangupHook(arg2);
+}
+
+
+SWIGEXPORT jboolean JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1ready(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jboolean jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ bool result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ result = (bool)(arg1)->ready();
+ jresult = (jboolean)result;
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1execute(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3) {
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ char *arg2 = (char *) 0 ;
+ char *arg3 = (char *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ arg2 = 0;
+ if (jarg2) {
+ arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
+ if (!arg2) return ;
+ }
+ arg3 = 0;
+ if (jarg3) {
+ arg3 = (char *)jenv->GetStringUTFChars(jarg3, 0);
+ if (!arg3) return ;
+ }
+ (arg1)->execute(arg2,arg3);
+ if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
+ if (arg3) jenv->ReleaseStringUTFChars(jarg3, (const char *)arg3);
+}
+
+
+SWIGEXPORT jboolean JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1begin_1allow_1threads(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jboolean jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ bool result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ result = (bool)(arg1)->begin_allow_threads();
+ jresult = (jboolean)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jboolean JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1end_1allow_1threads(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jboolean jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ bool result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ result = (bool)(arg1)->end_allow_threads();
+ jresult = (jboolean)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jstring JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1get_1uuid(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jstring jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ char *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ result = (char *)((CoreSession const *)arg1)->get_uuid();
+ if(result) jresult = jenv->NewStringUTF((const char *)result);
+ return jresult;
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1get_1cb_1args(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jlong jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ switch_input_args_t *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ {
+ switch_input_args_t const &_result_ref = ((CoreSession const *)arg1)->get_cb_args();
+ result = (switch_input_args_t *) &_result_ref;
+ }
+ *(switch_input_args_t **)&jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1check_1hangup_1hook(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ CoreSession *arg1 = (CoreSession *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ (arg1)->check_hangup_hook();
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1run_1dtmf_1callback(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jlong jarg3) {
+ jlong jresult = 0 ;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ void *arg2 = (void *) 0 ;
+ switch_input_type_t arg3 ;
+ switch_status_t result;
+ switch_input_type_t *argp3 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(CoreSession **)&jarg1;
+ arg2 = *(void **)&jarg2;
+ argp3 = *(switch_input_type_t **)&jarg3;
+ if (!argp3) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null switch_input_type_t");
+ return 0;
+ }
+ arg3 = *argp3;
+ result = (arg1)->run_dtmf_callback(arg2,arg3);
+ *(switch_status_t **)&jresult = new switch_status_t((switch_status_t &)result);
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_bridge(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) {
+ CoreSession *arg1 = 0 ;
+ CoreSession *arg2 = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ (void)jarg2_;
+ arg1 = *(CoreSession **)&jarg1;
+ if(!arg1) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "CoreSession & reference is null");
+ return ;
+ }
+ arg2 = *(CoreSession **)&jarg2;
+ if(!arg2) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "CoreSession & reference is null");
+ return ;
+ }
+ bridge(*arg1,*arg2);
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_hanguphook(JNIEnv *jenv, jclass jcls, jlong jarg1) {
+ jlong jresult = 0 ;
+ switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
+ switch_status_t result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(switch_core_session_t **)&jarg1;
+ result = hanguphook(arg1);
+ *(switch_status_t **)&jresult = new switch_status_t((switch_status_t &)result);
+ return jresult;
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_dtmf_1callback(JNIEnv *jenv, jclass jcls, jlong jarg1, jlong jarg2, jlong jarg3, jlong jarg4, jlong jarg5) {
+ jlong jresult = 0 ;
+ switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
+ void *arg2 = (void *) 0 ;
+ switch_input_type_t arg3 ;
+ void *arg4 = (void *) 0 ;
+ unsigned int arg5 ;
+ switch_status_t result;
+ switch_input_type_t *argp3 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(switch_core_session_t **)&jarg1;
+ arg2 = *(void **)&jarg2;
+ argp3 = *(switch_input_type_t **)&jarg3;
+ if (!argp3) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null switch_input_type_t");
+ return 0;
+ }
+ arg3 = *argp3;
+ arg4 = *(void **)&jarg4;
+ arg5 = (unsigned int)jarg5;
+ result = dtmf_callback(arg1,arg2,arg3,arg4,arg5);
+ *(switch_status_t **)&jresult = new switch_status_t((switch_status_t &)result);
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_javaVM_1set(JNIEnv *jenv, jclass jcls, jlong jarg1) {
+ JavaVM *arg1 = (JavaVM *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(JavaVM **)&jarg1;
+ javaVM = arg1;
+
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_javaVM_1get(JNIEnv *jenv, jclass jcls) {
+ jlong jresult = 0 ;
+ JavaVM *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ result = (JavaVM *)javaVM;
+ *(JavaVM **)&jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_new_1JavaSession_1_1SWIG_10(JNIEnv *jenv, jclass jcls) {
+ jlong jresult = 0 ;
+ JavaSession *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ result = (JavaSession *)new JavaSession();
+ *(JavaSession **)&jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_new_1JavaSession_1_1SWIG_11(JNIEnv *jenv, jclass jcls, jstring jarg1) {
+ jlong jresult = 0 ;
+ char *arg1 = (char *) 0 ;
+ JavaSession *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = 0;
+ if (jarg1) {
+ arg1 = (char *)jenv->GetStringUTFChars(jarg1, 0);
+ if (!arg1) return 0;
+ }
+ result = (JavaSession *)new JavaSession(arg1);
+ *(JavaSession **)&jresult = result;
+ if (arg1) jenv->ReleaseStringUTFChars(jarg1, (const char *)arg1);
+ return jresult;
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_new_1JavaSession_1_1SWIG_12(JNIEnv *jenv, jclass jcls, jlong jarg1) {
+ jlong jresult = 0 ;
+ switch_core_session_t *arg1 = (switch_core_session_t *) 0 ;
+ JavaSession *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(switch_core_session_t **)&jarg1;
+ result = (JavaSession *)new JavaSession(arg1);
+ *(JavaSession **)&jresult = result;
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_delete_1JavaSession(JNIEnv *jenv, jclass jcls, jlong jarg1) {
+ JavaSession *arg1 = (JavaSession *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(JavaSession **)&jarg1;
+ delete arg1;
+
+}
+
+
+SWIGEXPORT jboolean JNICALL Java_org_freeswitch_swig_freeswitchJNI_JavaSession_1begin_1allow_1threads(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jboolean jresult = 0 ;
+ JavaSession *arg1 = (JavaSession *) 0 ;
+ bool result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(JavaSession **)&jarg1;
+ result = (bool)(arg1)->begin_allow_threads();
+ jresult = (jboolean)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jboolean JNICALL Java_org_freeswitch_swig_freeswitchJNI_JavaSession_1end_1allow_1threads(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ jboolean jresult = 0 ;
+ JavaSession *arg1 = (JavaSession *) 0 ;
+ bool result;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(JavaSession **)&jarg1;
+ result = (bool)(arg1)->end_allow_threads();
+ jresult = (jboolean)result;
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_JavaSession_1setDTMFCallback(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jobject jarg2, jstring jarg3) {
+ JavaSession *arg1 = (JavaSession *) 0 ;
+ jobject arg2 ;
+ char *arg3 = (char *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(JavaSession **)&jarg1;
+ arg2 = jarg2;
+ arg3 = 0;
+ if (jarg3) {
+ arg3 = (char *)jenv->GetStringUTFChars(jarg3, 0);
+ if (!arg3) return ;
+ }
+ (arg1)->setDTMFCallback(arg2,arg3);
+ if (arg3) jenv->ReleaseStringUTFChars(jarg3, (const char *)arg3);
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_JavaSession_1setHangupHook(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jobject jarg2) {
+ JavaSession *arg1 = (JavaSession *) 0 ;
+ jobject arg2 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(JavaSession **)&jarg1;
+ arg2 = jarg2;
+ (arg1)->setHangupHook(arg2);
+}
+
+
+SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_JavaSession_1check_1hangup_1hook(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
+ JavaSession *arg1 = (JavaSession *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(JavaSession **)&jarg1;
+ (arg1)->check_hangup_hook();
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_JavaSession_1run_1dtmf_1callback(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jlong jarg3) {
+ jlong jresult = 0 ;
+ JavaSession *arg1 = (JavaSession *) 0 ;
+ void *arg2 = (void *) 0 ;
+ switch_input_type_t arg3 ;
+ switch_status_t result;
+ switch_input_type_t *argp3 ;
+
+ (void)jenv;
+ (void)jcls;
+ (void)jarg1_;
+ arg1 = *(JavaSession **)&jarg1;
+ arg2 = *(void **)&jarg2;
+ argp3 = *(switch_input_type_t **)&jarg3;
+ if (!argp3) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null switch_input_type_t");
+ return 0;
+ }
+ arg3 = *argp3;
+ result = (arg1)->run_dtmf_callback(arg2,arg3);
+ *(switch_status_t **)&jresult = new switch_status_t((switch_status_t &)result);
+ return jresult;
+}
+
+
+SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_SWIGJavaSessionUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) {
+ jlong baseptr = 0;
+ (void)jenv;
+ (void)jcls;
+ *(CoreSession **)&baseptr = *(JavaSession **)&jarg1;
+ return baseptr;
+}
+
+#ifdef __cplusplus
+}
+#endif
+
More information about the Freeswitch-svn
mailing list