diff --git a/src/include/switch_cpp.h b/src/include/switch_cpp.h index 4c690db6cb..0156146e56 100644 --- a/src/include/switch_cpp.h +++ b/src/include/switch_cpp.h @@ -236,6 +236,7 @@ SWITCH_DECLARE(void) consoleCleanLog(char *msg); SWITCH_DECLARE(void) say(const char *tosay, const char *module_name, const char *say_type, const char *say_method); SWITCH_DECLARE(void) sayPhrase(const char *phrase_name, const char *phrase_data = "", const char *phrase_lang = NULL); SWITCH_DECLARE(const char *) hangupCause(); + SWITCH_DECLARE(const char *) getState(); /** \brief Record to a file * \param file_name diff --git a/src/mod/languages/mod_managed/freeswitch_wrap.cxx b/src/mod/languages/mod_managed/freeswitch_wrap.cxx index 9da475d164..7f7704f849 100644 --- a/src/mod/languages/mod_managed/freeswitch_wrap.cxx +++ b/src/mod/languages/mod_managed/freeswitch_wrap.cxx @@ -28788,6 +28788,18 @@ SWIGEXPORT char * SWIGSTDCALL CSharp_CoreSession_hangupCause(void * jarg1) { } +SWIGEXPORT char * SWIGSTDCALL CSharp_CoreSession_getState(void * jarg1) { + char * jresult ; + CoreSession *arg1 = (CoreSession *) 0 ; + char *result = 0 ; + + arg1 = (CoreSession *)jarg1; + result = (char *)(arg1)->getState(); + jresult = SWIG_csharp_string_callback((const char *)result); + return jresult; +} + + SWIGEXPORT int SWIGSTDCALL CSharp_CoreSession_RecordFile(void * jarg1, char * jarg2, int jarg3, int jarg4, int jarg5) { int jresult ; CoreSession *arg1 = (CoreSession *) 0 ; diff --git a/src/mod/languages/mod_managed/managed/swig.cs b/src/mod/languages/mod_managed/managed/swig.cs index 5f2913088b..52d8b8deab 100644 --- a/src/mod/languages/mod_managed/managed/swig.cs +++ b/src/mod/languages/mod_managed/managed/swig.cs @@ -250,6 +250,11 @@ public class CoreSession : IDisposable { return ret; } + public string getState() { + string ret = freeswitchPINVOKE.CoreSession_getState(swigCPtr); + return ret; + } + public int RecordFile(string file_name, int time_limit, int silence_threshold, int silence_hits) { int ret = freeswitchPINVOKE.CoreSession_RecordFile(swigCPtr, file_name, time_limit, silence_threshold, silence_hits); return ret; @@ -11388,6 +11393,9 @@ class freeswitchPINVOKE { [DllImport("mod_managed", EntryPoint="CSharp_CoreSession_hangupCause")] public static extern string CoreSession_hangupCause(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_CoreSession_getState")] + public static extern string CoreSession_getState(HandleRef jarg1); + [DllImport("mod_managed", EntryPoint="CSharp_CoreSession_RecordFile")] public static extern int CoreSession_RecordFile(HandleRef jarg1, string jarg2, int jarg3, int jarg4, int jarg5); @@ -19235,11 +19243,10 @@ namespace FreeSWITCH.Native { SCF_USE_SQL = (1 << 0), SCF_NO_NEW_SESSIONS = (1 << 1), SCF_SHUTTING_DOWN = (1 << 2), - SCF_CRASH_PROT = (1 << 3), - SCF_VG = (1 << 4), - SCF_RESTART = (1 << 5), - SCF_SHUTDOWN_REQUESTED = (1 << 6), - SCF_USE_AUTO_NAT = (1 << 7) + SCF_VG = (1 << 3), + SCF_RESTART = (1 << 4), + SCF_SHUTDOWN_REQUESTED = (1 << 5), + SCF_USE_AUTO_NAT = (1 << 6) } } diff --git a/src/switch_cpp.cpp b/src/switch_cpp.cpp index 2e0613afb3..24e4d734a9 100644 --- a/src/switch_cpp.cpp +++ b/src/switch_cpp.cpp @@ -938,6 +938,18 @@ SWITCH_DECLARE(const char *) CoreSession::hangupCause() return switch_channel_cause2str(cause); } +SWITCH_DECLARE(const char *) CoreSession::getState() +{ + this_check(NULL); + + if (channel) { + return switch_channel_state_name(switch_channel_get_state(channel)); + } + + return "ERROR"; + +} + SWITCH_DECLARE(int) CoreSession::originate(CoreSession *a_leg_session, char *dest, int timeout, switch_state_handler_table_t *handlers) {