Refactor IEventReceiver back into IScriptEngine
parent
8699c2b3b9
commit
833f5e8bed
|
@ -2100,6 +2100,8 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
SceneObjectGroup sceneObject = m_serialiser.DeserializeGroupFromXml2(objXMLData);
|
||||
AddRestoredSceneObject(sceneObject, true, false);
|
||||
|
||||
sceneObject.CreateScriptInstances(0, false, DefaultScriptEngine);
|
||||
|
||||
SceneObjectPart RootPrim = GetSceneObjectPart(primID);
|
||||
if (RootPrim != null)
|
||||
{
|
||||
|
|
|
@ -44,7 +44,7 @@ using OpenSim.Region.ScriptEngine.Shared.ScriptBase;
|
|||
namespace OpenSim.Region.ScriptEngine.DotNetEngine
|
||||
{
|
||||
[Serializable]
|
||||
public class ScriptEngine : IRegionModule, IEventReceiver, IScriptModule
|
||||
public class ScriptEngine : IRegionModule, IScriptEngine, IScriptModule
|
||||
{
|
||||
private static readonly ILog m_log =
|
||||
LogManager.GetLogger(
|
||||
|
@ -388,5 +388,20 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
|
|||
{
|
||||
return m_ScriptManager.GetApi(itemID, name);
|
||||
}
|
||||
|
||||
public IScriptWorkItem QueueEventHandler(Object o)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public string GetAssemblyName(UUID itemID)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
public string GetXMLState(UUID itemID)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,71 +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 log4net;
|
||||
using System;
|
||||
using OpenSim.Region.ScriptEngine.Shared;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenMetaverse;
|
||||
using Nini.Config;
|
||||
using OpenSim.Region.ScriptEngine.Interfaces;
|
||||
using Amib.Threading;
|
||||
using OpenSim.Framework;
|
||||
|
||||
namespace OpenSim.Region.ScriptEngine.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// An interface for a script API module to communicate with
|
||||
/// the engine it's running under
|
||||
/// </summary>
|
||||
public interface IEventReceiver
|
||||
{
|
||||
Scene World { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Post an event to a single script
|
||||
/// </summary>
|
||||
bool PostScriptEvent(UUID itemID, EventParams parms);
|
||||
|
||||
/// <summary>
|
||||
/// Post event to an entire prim
|
||||
/// </summary>
|
||||
bool PostObjectEvent(uint localID, EventParams parms);
|
||||
|
||||
DetectParams GetDetectParams(UUID item, int number);
|
||||
int GetStartParameter(UUID itemID);
|
||||
|
||||
void SetScriptState(UUID itemID, bool state);
|
||||
bool GetScriptState(UUID itemID);
|
||||
void SetState(UUID itemID, string newState);
|
||||
void ApiResetScript(UUID itemID);
|
||||
void ResetScript(UUID itemID);
|
||||
IConfig Config { get; }
|
||||
string ScriptEngineName { get; }
|
||||
ILog Log { get; }
|
||||
IScriptApi GetApi(UUID itemID, string name);
|
||||
}
|
||||
}
|
|
@ -38,6 +38,6 @@ namespace OpenSim.Region.ScriptEngine.Interfaces
|
|||
// Each API has an identifier, which is used to load the
|
||||
// proper runtime assembly at load time.
|
||||
//
|
||||
void Initialize(IEventReceiver engine, SceneObjectPart part, uint localID, UUID item);
|
||||
void Initialize(IScriptEngine engine, SceneObjectPart part, uint localID, UUID item);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,6 +33,7 @@ using OpenMetaverse;
|
|||
using Nini.Config;
|
||||
using OpenSim.Region.ScriptEngine.Interfaces;
|
||||
using Amib.Threading;
|
||||
using OpenSim.Framework;
|
||||
|
||||
namespace OpenSim.Region.ScriptEngine.Interfaces
|
||||
{
|
||||
|
@ -40,11 +41,39 @@ namespace OpenSim.Region.ScriptEngine.Interfaces
|
|||
/// An interface for a script API module to communicate with
|
||||
/// the engine it's running under
|
||||
/// </summary>
|
||||
public interface IScriptEngine : IEventReceiver
|
||||
public interface IScriptEngine
|
||||
{
|
||||
/// <summary>
|
||||
/// Queue an event for execution
|
||||
/// </summary>
|
||||
IScriptWorkItem QueueEventHandler(object parms);
|
||||
|
||||
Scene World { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Post an event to a single script
|
||||
/// </summary>
|
||||
bool PostScriptEvent(UUID itemID, EventParams parms);
|
||||
|
||||
/// <summary>
|
||||
/// Post event to an entire prim
|
||||
/// </summary>
|
||||
bool PostObjectEvent(uint localID, EventParams parms);
|
||||
|
||||
DetectParams GetDetectParams(UUID item, int number);
|
||||
int GetStartParameter(UUID itemID);
|
||||
|
||||
void SetScriptState(UUID itemID, bool state);
|
||||
bool GetScriptState(UUID itemID);
|
||||
void SetState(UUID itemID, string newState);
|
||||
void ApiResetScript(UUID itemID);
|
||||
void ResetScript(UUID itemID);
|
||||
IConfig Config { get; }
|
||||
string ScriptEngineName { get; }
|
||||
ILog Log { get; }
|
||||
IScriptApi GetApi(UUID itemID, string name);
|
||||
|
||||
string GetAssemblyName(UUID itemID);
|
||||
string GetXMLState(UUID itemID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -99,5 +99,8 @@ namespace OpenSim.Region.ScriptEngine.Interfaces
|
|||
|
||||
Dictionary<KeyValuePair<int, int>, KeyValuePair<int, int>> LineMap
|
||||
{ get; set; }
|
||||
|
||||
string GetAssemblyName();
|
||||
string GetXMLState();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -48,24 +48,24 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
private static int cmdHandlerThreadCycleSleepms;
|
||||
|
||||
private static List<IScene> m_Scenes = new List<IScene>();
|
||||
private static List<IEventReceiver> m_ScriptEngines =
|
||||
new List<IEventReceiver>();
|
||||
private static List<IScriptEngine> m_ScriptEngines =
|
||||
new List<IScriptEngine>();
|
||||
|
||||
public IEventReceiver m_ScriptEngine;
|
||||
public IScriptEngine m_ScriptEngine;
|
||||
private IScene m_Scene;
|
||||
|
||||
private static Dictionary<IEventReceiver, Dataserver> m_Dataserver =
|
||||
new Dictionary<IEventReceiver, Dataserver>();
|
||||
private static Dictionary<IEventReceiver, Timer> m_Timer =
|
||||
new Dictionary<IEventReceiver, Timer>();
|
||||
private static Dictionary<IEventReceiver, Listener> m_Listener =
|
||||
new Dictionary<IEventReceiver, Listener>();
|
||||
private static Dictionary<IEventReceiver, HttpRequest> m_HttpRequest =
|
||||
new Dictionary<IEventReceiver, HttpRequest>();
|
||||
private static Dictionary<IEventReceiver, SensorRepeat> m_SensorRepeat =
|
||||
new Dictionary<IEventReceiver, SensorRepeat>();
|
||||
private static Dictionary<IEventReceiver, XmlRequest> m_XmlRequest =
|
||||
new Dictionary<IEventReceiver, XmlRequest>();
|
||||
private static Dictionary<IScriptEngine, Dataserver> m_Dataserver =
|
||||
new Dictionary<IScriptEngine, Dataserver>();
|
||||
private static Dictionary<IScriptEngine, Timer> m_Timer =
|
||||
new Dictionary<IScriptEngine, Timer>();
|
||||
private static Dictionary<IScriptEngine, Listener> m_Listener =
|
||||
new Dictionary<IScriptEngine, Listener>();
|
||||
private static Dictionary<IScriptEngine, HttpRequest> m_HttpRequest =
|
||||
new Dictionary<IScriptEngine, HttpRequest>();
|
||||
private static Dictionary<IScriptEngine, SensorRepeat> m_SensorRepeat =
|
||||
new Dictionary<IScriptEngine, SensorRepeat>();
|
||||
private static Dictionary<IScriptEngine, XmlRequest> m_XmlRequest =
|
||||
new Dictionary<IScriptEngine, XmlRequest>();
|
||||
|
||||
public Dataserver DataserverPlugin
|
||||
{
|
||||
|
@ -97,12 +97,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
get { return m_XmlRequest[m_ScriptEngine]; }
|
||||
}
|
||||
|
||||
public IEventReceiver[] ScriptEngines
|
||||
public IScriptEngine[] ScriptEngines
|
||||
{
|
||||
get { return m_ScriptEngines.ToArray(); }
|
||||
}
|
||||
|
||||
public AsyncCommandManager(IEventReceiver _ScriptEngine)
|
||||
public AsyncCommandManager(IScriptEngine _ScriptEngine)
|
||||
{
|
||||
m_ScriptEngine = _ScriptEngine;
|
||||
m_Scene = m_ScriptEngine.World;
|
||||
|
@ -202,7 +202,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
// Check XMLRPCRequests
|
||||
m_XmlRequest[m_ScriptEngines[0]].CheckXMLRPCRequests();
|
||||
|
||||
foreach (IEventReceiver s in m_ScriptEngines)
|
||||
foreach (IScriptEngine s in m_ScriptEngines)
|
||||
{
|
||||
// Check Listeners
|
||||
m_Listener[s].CheckListeners();
|
||||
|
@ -223,7 +223,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
/// </summary>
|
||||
/// <param name="localID"></param>
|
||||
/// <param name="itemID"></param>
|
||||
public static void RemoveScript(IEventReceiver engine, uint localID, UUID itemID)
|
||||
public static void RemoveScript(IScriptEngine engine, uint localID, UUID itemID)
|
||||
{
|
||||
// Remove a specific script
|
||||
|
||||
|
@ -250,7 +250,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
|
||||
}
|
||||
|
||||
public static Object[] GetSerializationData(IEventReceiver engine, UUID itemID)
|
||||
public static Object[] GetSerializationData(IScriptEngine engine, UUID itemID)
|
||||
{
|
||||
List<Object> data = new List<Object>();
|
||||
|
||||
|
@ -281,7 +281,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
return data.ToArray();
|
||||
}
|
||||
|
||||
public static void CreateFromData(IEventReceiver engine, uint localID,
|
||||
public static void CreateFromData(IScriptEngine engine, uint localID,
|
||||
UUID itemID, UUID hostID, Object[] data)
|
||||
{
|
||||
int idx = 0;
|
||||
|
|
|
@ -66,7 +66,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
/// </summary>
|
||||
public class LSL_Api : MarshalByRefObject, ILSL_Api, IScriptApi
|
||||
{
|
||||
protected IEventReceiver m_ScriptEngine;
|
||||
protected IScriptEngine m_ScriptEngine;
|
||||
protected SceneObjectPart m_host;
|
||||
protected uint m_localID;
|
||||
protected UUID m_itemID;
|
||||
|
@ -80,7 +80,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
|
||||
//private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
public void Initialize(IEventReceiver ScriptEngine, SceneObjectPart host, uint localID, UUID itemID)
|
||||
public void Initialize(IScriptEngine ScriptEngine, SceneObjectPart host, uint localID, UUID itemID)
|
||||
{
|
||||
m_ScriptEngine = ScriptEngine;
|
||||
m_host = host;
|
||||
|
|
|
@ -99,7 +99,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
[Serializable]
|
||||
public class OSSL_Api : MarshalByRefObject, IOSSL_Api, IScriptApi
|
||||
{
|
||||
internal IEventReceiver m_ScriptEngine;
|
||||
internal IScriptEngine m_ScriptEngine;
|
||||
internal ILSL_Api m_LSL_Api; // get a reference to the LSL API so we can call methods housed there
|
||||
internal SceneObjectPart m_host;
|
||||
internal uint m_localID;
|
||||
|
@ -110,7 +110,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
internal float m_ScriptDistanceFactor = 1.0f;
|
||||
internal Dictionary<string, List<UUID> > m_FunctionPerms = new Dictionary<string, List<UUID> >();
|
||||
|
||||
public void Initialize(IEventReceiver ScriptEngine, SceneObjectPart host, uint localID, UUID itemID)
|
||||
public void Initialize(IScriptEngine ScriptEngine, SceneObjectPart host, uint localID, UUID itemID)
|
||||
{
|
||||
m_ScriptEngine = ScriptEngine;
|
||||
m_host = host;
|
||||
|
|
|
@ -77,7 +77,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
|
|||
new LSL_Types.LSLString(httpInfo.response_body)
|
||||
};
|
||||
|
||||
foreach (IEventReceiver e in m_CmdManager.ScriptEngines)
|
||||
foreach (IScriptEngine e in m_CmdManager.ScriptEngines)
|
||||
{
|
||||
if (e.PostObjectEvent(httpInfo.localID,
|
||||
new EventParams("http_response",
|
||||
|
|
|
@ -67,7 +67,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
|
|||
new LSL_Types.LSLString(lInfo.GetMessage())
|
||||
};
|
||||
|
||||
foreach (IEventReceiver e in m_CmdManager.ScriptEngines)
|
||||
foreach (IScriptEngine e in m_CmdManager.ScriptEngines)
|
||||
{
|
||||
e.PostScriptEvent(
|
||||
lInfo.GetItemID(), new EventParams(
|
||||
|
|
|
@ -71,7 +71,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
|
|||
new LSL_Types.LSLString(rInfo.GetStrVal())
|
||||
};
|
||||
|
||||
foreach (IEventReceiver e in m_CmdManager.ScriptEngines)
|
||||
foreach (IScriptEngine e in m_CmdManager.ScriptEngines)
|
||||
{
|
||||
if (e.PostScriptEvent(
|
||||
rInfo.GetItemID(), new EventParams(
|
||||
|
@ -100,7 +100,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
|
|||
new LSL_Types.LSLString(srdInfo.sdata)
|
||||
};
|
||||
|
||||
foreach (IEventReceiver e in m_CmdManager.ScriptEngines)
|
||||
foreach (IScriptEngine e in m_CmdManager.ScriptEngines)
|
||||
{
|
||||
if (e.PostScriptEvent(
|
||||
srdInfo.m_itemID, new EventParams(
|
||||
|
|
|
@ -83,8 +83,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools
|
|||
// private static int instanceID = new Random().Next(0, int.MaxValue); // Unique number to use on our compiled files
|
||||
private static UInt64 scriptCompileCounter = 0; // And a counter
|
||||
|
||||
public IEventReceiver m_scriptEngine;
|
||||
public Compiler(IEventReceiver scriptEngine)
|
||||
public IScriptEngine m_scriptEngine;
|
||||
public Compiler(IScriptEngine scriptEngine)
|
||||
{
|
||||
m_scriptEngine = scriptEngine;
|
||||
ReadConfig();
|
||||
|
|
|
@ -848,5 +848,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
|||
|
||||
return e.ToString();
|
||||
}
|
||||
|
||||
public string GetAssemblyName()
|
||||
{
|
||||
return m_Assembly;
|
||||
}
|
||||
|
||||
public string GetXMLState()
|
||||
{
|
||||
Stop(100);
|
||||
return ScriptSerializer.Serialize(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -985,5 +985,21 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
|||
controllingClient.AgentId);
|
||||
}
|
||||
}
|
||||
|
||||
public string GetAssemblyName(UUID itemID)
|
||||
{
|
||||
IScriptInstance instance = GetInstance(itemID);
|
||||
if (instance == null)
|
||||
return null;
|
||||
return instance.GetAssemblyName();
|
||||
}
|
||||
|
||||
public string GetXMLState(UUID itemID)
|
||||
{
|
||||
IScriptInstance instance = GetInstance(itemID);
|
||||
if (instance == null)
|
||||
return null;
|
||||
return instance.GetXMLState();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue