]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Tweak input/error handling
authorMichael Giagnocavo <mgg@giagnocavo.net>
Sat, 4 Oct 2008 09:36:52 +0000 (09:36 +0000)
committerMichael Giagnocavo <mgg@giagnocavo.net>
Sat, 4 Oct 2008 09:36:52 +0000 (09:36 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@9831 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/languages/mod_managed/managed/Loader.cs
src/mod/languages/mod_managed/managed/ManagedSession.cs
src/mod/languages/mod_managed/managed/swig.cs

index f6c460dad2213c183492354715439bbadff2930e..c49ad78954b01de943f327ac11e208ee1fa13ee6 100644 (file)
@@ -57,6 +57,14 @@ namespace FreeSWITCH
                 return false;\r
             }\r
 \r
+            AppDomain.CurrentDomain.AssemblyResolve += (_, rargs) => {\r
+                Log.WriteLine(LogLevel.Debug, "Trying to resolve assembly '{0}'.", rargs.Name);\r
+                if (rargs.Name == Assembly.GetExecutingAssembly().FullName) return Assembly.GetExecutingAssembly();\r
+                var path = Path.Combine(managedDir, rargs.Name + ".dll");\r
+                Log.WriteLine(LogLevel.Debug, "Resolving to: '" + path + "'.");\r
+                return File.Exists(path) ? Assembly.LoadFile(path) : null;\r
+            };\r
+\r
             // This is a simple one-time loader to get things in memory\r
             // Some day we should allow reloading of modules or something\r
             loadAssemblies(managedDir)\r
@@ -109,6 +117,7 @@ namespace FreeSWITCH
             {\r
                 string f = Path.Combine(managedDir, s);\r
                 try {\r
+                    Log.WriteLine(LogLevel.Debug, "Loading '{0}'.", f);\r
                     System.Reflection.Assembly.LoadFile(f);\r
                 }\r
                 catch (Exception ex) {\r
index a55772822053128489c62df00f2185a2f3fe00f0..57064f9ce47250d3646d6a5659059e836328666c 100644 (file)
@@ -76,7 +76,6 @@ namespace FreeSWITCH.Native
             }\r
             catch (Exception ex) {\r
                 Log.WriteLine(LogLevel.Warning, "Exception in hangupCallback: {0}", ex.ToString());\r
-                throw;\r
             }\r
         }\r
 \r
@@ -86,35 +85,36 @@ namespace FreeSWITCH.Native
 \r
         string inputCallback(IntPtr input, Native.switch_input_type_t inputType)\r
         {\r
-            switch (inputType) {\r
-                case FreeSWITCH.Native.switch_input_type_t.SWITCH_INPUT_TYPE_DTMF:\r
-                    using (var dtmf = new Native.switch_dtmf_t(input, false)) {\r
-                        return dtmfCallback(dtmf);\r
-                    }\r
-                case FreeSWITCH.Native.switch_input_type_t.SWITCH_INPUT_TYPE_EVENT:\r
-                    using (var swevt = new Native.switch_event(input, false)) {\r
-                        return eventCallback(swevt);\r
-                    }\r
-                default:\r
-                    return "";\r
+            try {\r
+                switch (inputType) {\r
+                    case FreeSWITCH.Native.switch_input_type_t.SWITCH_INPUT_TYPE_DTMF:\r
+                        using (var dtmf = new Native.switch_dtmf_t(input, false)) {\r
+                            return dtmfCallback(dtmf);\r
+                        }\r
+                    case FreeSWITCH.Native.switch_input_type_t.SWITCH_INPUT_TYPE_EVENT:\r
+                        using (var swevt = new Native.switch_event(input, false)) {\r
+                            return eventCallback(swevt);\r
+                        }\r
+                    default:\r
+                        return "";\r
+                }\r
+            } catch (Exception ex) {\r
+                Log.WriteLine(LogLevel.Error, "InputCallback threw exception: " + ex.ToString());\r
+                return "-ERR InputCallback Exception: " + ex.Message;\r
             }\r
         }\r
 \r
-        string dtmfCallback(Native.switch_dtmf_t dtmf)\r
-        {\r
+        string dtmfCallback(Native.switch_dtmf_t dtmf) {\r
             var f = DtmfReceivedFunction;\r
-            return f == null ?\r
-                "-ERR No DtmfReceivedFunction set." :\r
-                f(((char)(byte)dtmf.digit), TimeSpan.FromMilliseconds(dtmf.duration));\r
+            return f == null ? "" \r
+                : f(((char)(byte)dtmf.digit), TimeSpan.FromMilliseconds(dtmf.duration));\r
         }\r
 \r
-        string eventCallback(Native.switch_event swevt)\r
-        {\r
+        string eventCallback(Native.switch_event swevt) {\r
             using (var evt = new FreeSWITCH.Native.Event(swevt, 0)) {\r
                 var f = EventReceivedFunction;\r
-                return f == null ?\r
-                    "-ERR No EventReceivedFunction set." :\r
-                    f(evt);\r
+                return f == null ? "" \r
+                    : f(evt);\r
             }\r
         }\r
 \r
index 13eb5dfd7af76c3489a5db3f4b721453e1e01b1d..c883eb62bfd99af242feac365616fbb08689c70e 100644 (file)
@@ -2758,7 +2758,7 @@ public class freeswitch {
     return ret;
   }
 
-  public static switch_status_t switch_ivr_detect_speech(SWIGTYPE_p_switch_core_session session, string mod_name, string grammar, string path, string dest, switch_asr_handle ah) {
+  public static switch_status_t oh(SWIGTYPE_p_switch_core_session session, string mod_name, string grammar, string path, string dest, switch_asr_handle ah) {
     switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_detect_speech(SWIGTYPE_p_switch_core_session.getCPtr(session), mod_name, grammar, path, dest, switch_asr_handle.getCPtr(ah));
     return ret;
   }