From 8231ac72eca0991d0a0a2262d37a97eb9ad23bd4 Mon Sep 17 00:00:00 2001
From: Tedd Hansen
Date: Tue, 25 Sep 2007 00:22:06 +0000
Subject: More reorganizing of new SE. Added debug print of application
exception.
---
OpenSim/Grid/ScriptServer/Application.cs | 12 ++
.../ScriptEngine/ScriptEngineInterface.cs | 38 -------
.../ScriptEngine/ScriptEngineLoader.cs | 125 ---------------------
.../ScriptEngineManager/ScriptEngineInterface.cs | 38 +++++++
.../ScriptEngineManager/ScriptEngineLoader.cs | 125 +++++++++++++++++++++
.../ScriptServer/ScriptServer/ScriptEngines.cs | 41 -------
.../ScriptServer/ScriptEnginesManager.cs | 41 +++++++
OpenSim/Grid/ScriptServer/ScriptServerMain.cs | 4 +-
8 files changed, 218 insertions(+), 206 deletions(-)
delete mode 100644 OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngine/ScriptEngineInterface.cs
delete mode 100644 OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngine/ScriptEngineLoader.cs
create mode 100644 OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngineManager/ScriptEngineInterface.cs
create mode 100644 OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngineManager/ScriptEngineLoader.cs
delete mode 100644 OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngines.cs
create mode 100644 OpenSim/Grid/ScriptServer/ScriptServer/ScriptEnginesManager.cs
diff --git a/OpenSim/Grid/ScriptServer/Application.cs b/OpenSim/Grid/ScriptServer/Application.cs
index e7a6590..780f037 100644
--- a/OpenSim/Grid/ScriptServer/Application.cs
+++ b/OpenSim/Grid/ScriptServer/Application.cs
@@ -40,6 +40,18 @@ namespace OpenSim.Grid.ScriptServer
{
// Application is starting
SE = new ScriptServerMain();
+
+ System.AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
+ }
+
+ static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
+ {
+ Console.WriteLine("");
+ Console.WriteLine("APPLICATION EXCEPTION DETECTED");
+ Console.WriteLine("");
+ Console.WriteLine("Application is terminating: " + e.IsTerminating.ToString());
+ Console.WriteLine("Exception:");
+ Console.WriteLine(e.ExceptionObject.ToString());
}
}
diff --git a/OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngine/ScriptEngineInterface.cs b/OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngine/ScriptEngineInterface.cs
deleted file mode 100644
index 7440bcb..0000000
--- a/OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngine/ScriptEngineInterface.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-* Copyright (c) Contributors, http://opensimulator.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-* * Redistributions of source code must retain the above copyright
-* notice, this list of conditions and the following disclaimer.
-* * Redistributions in binary form must reproduce the above copyright
-* notice, this list of conditions and the following disclaimer in the
-* documentation and/or other materials provided with the distribution.
-* * Neither the name of the OpenSim Project nor the
-* names of its contributors may be used to endorse or promote products
-* derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*
-*/
-using OpenSim.Framework.Console;
-
-namespace OpenSim.Grid.ScriptServer
-{
- public interface ScriptEngineInterface
- {
- //void InitializeEngine(Scene Sceneworld, LogBase logger);
- void Shutdown();
-// void StartScript(string ScriptID, IScriptHost ObjectID);
- }
-}
\ No newline at end of file
diff --git a/OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngine/ScriptEngineLoader.cs b/OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngine/ScriptEngineLoader.cs
deleted file mode 100644
index 8b07ab0..0000000
--- a/OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngine/ScriptEngineLoader.cs
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
-* Copyright (c) Contributors, http://opensimulator.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-* * Redistributions of source code must retain the above copyright
-* notice, this list of conditions and the following disclaimer.
-* * Redistributions in binary form must reproduce the above copyright
-* notice, this list of conditions and the following disclaimer in the
-* documentation and/or other materials provided with the distribution.
-* * Neither the name of the OpenSim Project nor the
-* names of its contributors may be used to endorse or promote products
-* derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*
-*/
-using System;
-using System.IO;
-using System.Reflection;
-using OpenSim.Framework.Console;
-
-namespace OpenSim.Grid.ScriptServer
-{
- internal class ScriptEngineLoader
- {
- private LogBase m_log;
-
-
- public ScriptEngineLoader(LogBase logger)
- {
- m_log = logger;
- }
-
- public ScriptEngineInterface LoadScriptEngine(string EngineName)
- {
- ScriptEngineInterface ret = null;
- try
- {
- ret =
- LoadAndInitAssembly(
- Path.Combine("ScriptEngines", "OpenSim.Region.ScriptEngine." + EngineName + ".dll"),
- "OpenSim.Region.ScriptEngine." + EngineName + ".ScriptEngine");
- }
- catch (Exception e)
- {
- m_log.Error("ScriptEngine",
- "Error loading assembly \"" + EngineName + "\": " + e.Message + ", " +
- e.StackTrace.ToString());
- }
- return ret;
- }
-
- ///
- /// Does actual loading and initialization of script Assembly
- ///
- /// AppDomain to load script into
- /// FileName of script assembly (.dll)
- ///
- private ScriptEngineInterface LoadAndInitAssembly(string FileName, string NameSpace)
- {
- //Common.SendToDebug("Loading ScriptEngine Assembly " + FileName);
- // Load .Net Assembly (.dll)
- // Initialize and return it
-
- // TODO: Add error handling
-
- Assembly a;
- //try
- //{
-
-
- // Load to default appdomain (temporary)
- a = Assembly.LoadFrom(FileName);
- // Load to specified appdomain
- // TODO: Insert security
- //a = FreeAppDomain.Load(FileName);
- //}
- //catch (Exception e)
- //{
- // m_log.Error("ScriptEngine", "Error loading assembly \"" + FileName + "\": " + e.ToString());
- //}
-
-
- //Console.WriteLine("Loading: " + FileName);
- //foreach (Type _t in a.GetTypes())
- //{
- // Console.WriteLine("Type: " + _t.ToString());
- //}
-
- Type t;
- //try
- //{
- t = a.GetType(NameSpace, true);
- //}
- //catch (Exception e)
- //{
- // m_log.Error("ScriptEngine", "Error initializing type \"" + NameSpace + "\" from \"" + FileName + "\": " + e.ToString());
- //}
-
- ScriptEngineInterface ret;
- //try
- //{
- ret = (ScriptEngineInterface) Activator.CreateInstance(t);
- //}
- //catch (Exception e)
- //{
- // m_log.Error("ScriptEngine", "Error initializing type \"" + NameSpace + "\" from \"" + FileName + "\": " + e.ToString());
- //}
-
- return ret;
- }
- }
-}
-
diff --git a/OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngineManager/ScriptEngineInterface.cs b/OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngineManager/ScriptEngineInterface.cs
new file mode 100644
index 0000000..7440bcb
--- /dev/null
+++ b/OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngineManager/ScriptEngineInterface.cs
@@ -0,0 +1,38 @@
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* * Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in the
+* documentation and/or other materials provided with the distribution.
+* * Neither the name of the OpenSim Project nor the
+* names of its contributors may be used to endorse or promote products
+* derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+*/
+using OpenSim.Framework.Console;
+
+namespace OpenSim.Grid.ScriptServer
+{
+ public interface ScriptEngineInterface
+ {
+ //void InitializeEngine(Scene Sceneworld, LogBase logger);
+ void Shutdown();
+// void StartScript(string ScriptID, IScriptHost ObjectID);
+ }
+}
\ No newline at end of file
diff --git a/OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngineManager/ScriptEngineLoader.cs b/OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngineManager/ScriptEngineLoader.cs
new file mode 100644
index 0000000..8b07ab0
--- /dev/null
+++ b/OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngineManager/ScriptEngineLoader.cs
@@ -0,0 +1,125 @@
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* * Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in the
+* documentation and/or other materials provided with the distribution.
+* * Neither the name of the OpenSim Project nor the
+* names of its contributors may be used to endorse or promote products
+* derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+*/
+using System;
+using System.IO;
+using System.Reflection;
+using OpenSim.Framework.Console;
+
+namespace OpenSim.Grid.ScriptServer
+{
+ internal class ScriptEngineLoader
+ {
+ private LogBase m_log;
+
+
+ public ScriptEngineLoader(LogBase logger)
+ {
+ m_log = logger;
+ }
+
+ public ScriptEngineInterface LoadScriptEngine(string EngineName)
+ {
+ ScriptEngineInterface ret = null;
+ try
+ {
+ ret =
+ LoadAndInitAssembly(
+ Path.Combine("ScriptEngines", "OpenSim.Region.ScriptEngine." + EngineName + ".dll"),
+ "OpenSim.Region.ScriptEngine." + EngineName + ".ScriptEngine");
+ }
+ catch (Exception e)
+ {
+ m_log.Error("ScriptEngine",
+ "Error loading assembly \"" + EngineName + "\": " + e.Message + ", " +
+ e.StackTrace.ToString());
+ }
+ return ret;
+ }
+
+ ///
+ /// Does actual loading and initialization of script Assembly
+ ///
+ /// AppDomain to load script into
+ /// FileName of script assembly (.dll)
+ ///
+ private ScriptEngineInterface LoadAndInitAssembly(string FileName, string NameSpace)
+ {
+ //Common.SendToDebug("Loading ScriptEngine Assembly " + FileName);
+ // Load .Net Assembly (.dll)
+ // Initialize and return it
+
+ // TODO: Add error handling
+
+ Assembly a;
+ //try
+ //{
+
+
+ // Load to default appdomain (temporary)
+ a = Assembly.LoadFrom(FileName);
+ // Load to specified appdomain
+ // TODO: Insert security
+ //a = FreeAppDomain.Load(FileName);
+ //}
+ //catch (Exception e)
+ //{
+ // m_log.Error("ScriptEngine", "Error loading assembly \"" + FileName + "\": " + e.ToString());
+ //}
+
+
+ //Console.WriteLine("Loading: " + FileName);
+ //foreach (Type _t in a.GetTypes())
+ //{
+ // Console.WriteLine("Type: " + _t.ToString());
+ //}
+
+ Type t;
+ //try
+ //{
+ t = a.GetType(NameSpace, true);
+ //}
+ //catch (Exception e)
+ //{
+ // m_log.Error("ScriptEngine", "Error initializing type \"" + NameSpace + "\" from \"" + FileName + "\": " + e.ToString());
+ //}
+
+ ScriptEngineInterface ret;
+ //try
+ //{
+ ret = (ScriptEngineInterface) Activator.CreateInstance(t);
+ //}
+ //catch (Exception e)
+ //{
+ // m_log.Error("ScriptEngine", "Error initializing type \"" + NameSpace + "\" from \"" + FileName + "\": " + e.ToString());
+ //}
+
+ return ret;
+ }
+ }
+}
+
diff --git a/OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngines.cs b/OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngines.cs
deleted file mode 100644
index 0313edf..0000000
--- a/OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngines.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using OpenSim.Framework.Console;
-
-namespace OpenSim.Grid.ScriptServer
-{
- internal class ScriptEngines
- {
- private LogBase m_log;
- private ScriptEngineLoader ScriptEngineLoader;
- private List scriptEngines = new List();
- private ScriptServerMain m_ScriptServerMain;
-
- // Initialize
- public ScriptEngines(ScriptServerMain scm, LogBase logger)
- {
- m_ScriptServerMain = scm;
- m_log = logger;
- ScriptEngineLoader = new ScriptEngineLoader(m_log);
-
- // Temp - we should not load during initialize... Loading should be done later.
- LoadEngine("DotNetScriptEngine");
- }
- ~ScriptEngines()
- {
- }
-
- public void LoadEngine(string engineName)
- {
- // Load and add to list of ScriptEngines
- ScriptEngineInterface sei = ScriptEngineLoader.LoadScriptEngine(engineName);
- if (sei != null)
- {
- scriptEngines.Add(sei);
- }
- }
-
-
- }
-}
diff --git a/OpenSim/Grid/ScriptServer/ScriptServer/ScriptEnginesManager.cs b/OpenSim/Grid/ScriptServer/ScriptServer/ScriptEnginesManager.cs
new file mode 100644
index 0000000..faa859d
--- /dev/null
+++ b/OpenSim/Grid/ScriptServer/ScriptServer/ScriptEnginesManager.cs
@@ -0,0 +1,41 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using OpenSim.Framework.Console;
+
+namespace OpenSim.Grid.ScriptServer
+{
+ internal class ScriptEngineManager
+ {
+ private LogBase m_log;
+ private ScriptEngineLoader ScriptEngineLoader;
+ private List scriptEngines = new List();
+ private ScriptServerMain m_ScriptServerMain;
+
+ // Initialize
+ public ScriptEngineManager(ScriptServerMain scm, LogBase logger)
+ {
+ m_ScriptServerMain = scm;
+ m_log = logger;
+ ScriptEngineLoader = new ScriptEngineLoader(m_log);
+
+ // Temp - we should not load during initialize... Loading should be done later.
+ LoadEngine("DotNetScriptEngine");
+ }
+ ~ScriptEngineManager()
+ {
+ }
+
+ public void LoadEngine(string engineName)
+ {
+ // Load and add to list of ScriptEngines
+ ScriptEngineInterface sei = ScriptEngineLoader.LoadScriptEngine(engineName);
+ if (sei != null)
+ {
+ scriptEngines.Add(sei);
+ }
+ }
+
+
+ }
+}
diff --git a/OpenSim/Grid/ScriptServer/ScriptServerMain.cs b/OpenSim/Grid/ScriptServer/ScriptServerMain.cs
index f85cf98..8352859 100644
--- a/OpenSim/Grid/ScriptServer/ScriptServerMain.cs
+++ b/OpenSim/Grid/ScriptServer/ScriptServerMain.cs
@@ -11,7 +11,7 @@ namespace OpenSim.Grid.ScriptServer
{
private readonly string m_logFilename = ("region-console.log");
internal RegionCommManager RegionScriptDaemon; // Listen for incoming from region
- internal ScriptEngines ScriptEngines; // Loads scriptengines
+ internal ScriptEngineManager ScriptEngines; // Loads scriptengines
private LogBase m_log;
public ScriptServerMain()
@@ -19,7 +19,7 @@ namespace OpenSim.Grid.ScriptServer
m_log = CreateLog();
RegionScriptDaemon = new RegionCommManager(this, m_log);
- ScriptEngines = new ScriptEngines(this, m_log);
+ ScriptEngines = new ScriptEngineManager(this, m_log);
}
--
cgit v1.1