From 8902923b12718399edf7b6bf39ea0ff37002ae24 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Fri, 10 Apr 2009 21:08:33 +0000 Subject: Introduce IXmlRpcRouter, an interface that allows registering XMLRPC UUIDs with a central marshaller for grids, or publish the ULS for objects elsewhere. --- .../Region/ScriptEngine/DotNetEngine/ScriptEngine.cs | 10 ++++++++++ .../Region/ScriptEngine/Interfaces/IScriptEngine.cs | 3 +++ .../ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 3 +++ OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | 18 ++++++++++++++++++ 4 files changed, 34 insertions(+) (limited to 'OpenSim/Region/ScriptEngine') diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs index b850227..34a7c7a 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs @@ -96,6 +96,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine get { return "ScriptEngine.DotNetEngine"; } } + public IScriptModule ScriptModule + { + get { return this; } + } + public event ScriptRemoved OnScriptRemoved; public event ObjectRemoved OnObjectRemoved; @@ -212,6 +217,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine p.EventName, p.DetectParams, p.Params); } + public bool PostScriptEvent(UUID itemID, string name, Object[] p) + { + return PostScriptEvent(itemID, new EventParams(name, p, new DetectParams[0])); + } + public DetectParams GetDetectParams(UUID itemID, int number) { uint localID = m_ScriptManager.GetLocalID(itemID); diff --git a/OpenSim/Region/ScriptEngine/Interfaces/IScriptEngine.cs b/OpenSim/Region/ScriptEngine/Interfaces/IScriptEngine.cs index 8da46f4..fd352cf 100644 --- a/OpenSim/Region/ScriptEngine/Interfaces/IScriptEngine.cs +++ b/OpenSim/Region/ScriptEngine/Interfaces/IScriptEngine.cs @@ -29,6 +29,7 @@ using log4net; using System; using OpenSim.Region.ScriptEngine.Shared; using OpenSim.Region.Framework.Scenes; +using OpenSim.Region.Framework.Interfaces; using OpenMetaverse; using Nini.Config; using OpenSim.Region.ScriptEngine.Interfaces; @@ -54,6 +55,8 @@ namespace OpenSim.Region.ScriptEngine.Interfaces Scene World { get; } + IScriptModule ScriptModule { get; } + event ScriptRemoved OnScriptRemoved; event ObjectRemoved OnObjectRemoved; diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index d3543ad..f4e7990 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -6108,6 +6108,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if (xmlrpcMod.IsEnabled()) { UUID channelID = xmlrpcMod.OpenXMLRPCChannel(m_localID, m_itemID, UUID.Zero); + IXmlRpcRouter xmlRpcRouter = m_ScriptEngine.World.RequestModuleInterface(); + if (xmlRpcRouter != null) + xmlRpcRouter.RegisterNewReceiver(m_ScriptEngine.ScriptModule, channelID, m_host.UUID, m_itemID, "http://"+System.Environment.MachineName+":"+xmlrpcMod.Port.ToString()+"/"); object[] resobj = new object[] { new LSL_Integer(1), new LSL_String(channelID.ToString()), new LSL_String(UUID.Zero.ToString()), new LSL_String(String.Empty), new LSL_Integer(0), new LSL_String(String.Empty) }; m_ScriptEngine.PostScriptEvent(m_itemID, new EventParams( "remote_data", resobj, diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index 357ee32..a78dad6 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs @@ -78,6 +78,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine #pragma warning disable 414 private EventManager m_EventManager; #pragma warning restore 414 + private IXmlRpcRouter m_XmlRpcRouter; private int m_EventLimit; private bool m_KillTimedOutScripts; @@ -130,6 +131,11 @@ namespace OpenSim.Region.ScriptEngine.XEngine get { return m_ScriptEngines; } } + public IScriptModule ScriptModule + { + get { return this; } + } + // private struct RezScriptParms // { // uint LocalID; @@ -222,6 +228,13 @@ namespace OpenSim.Region.ScriptEngine.XEngine m_MaxScriptQueue, m_StackSize); m_Scene.StackModuleInterface(this); + + m_XmlRpcRouter = m_Scene.RequestModuleInterface(); + if (m_XmlRpcRouter != null) + { + OnScriptRemoved += m_XmlRpcRouter.ScriptRemoved; + OnObjectRemoved += m_XmlRpcRouter.ObjectRemoved; + } } public void PostInitialise() @@ -917,6 +930,11 @@ namespace OpenSim.Region.ScriptEngine.XEngine return false; } + public bool PostScriptEvent(UUID itemID, string name, Object[] p) + { + return PostScriptEvent(itemID, new EventParams(name, p, new DetectParams[0])); + } + public Assembly OnAssemblyResolve(object sender, ResolveEventArgs args) { -- cgit v1.1