From 571f6a030002e754e9c711218396fa649ac28de6 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sun, 11 Nov 2012 15:29:25 -0800 Subject: One more module converted: XMLRPCModule. Removed it from the special loading at start. --- .../CoreModules/Scripting/XMLRPC/XMLRPCModule.cs | 82 ++++++++++++++-------- 1 file changed, 51 insertions(+), 31 deletions(-) (limited to 'OpenSim/Region') diff --git a/OpenSim/Region/CoreModules/Scripting/XMLRPC/XMLRPCModule.cs b/OpenSim/Region/CoreModules/Scripting/XMLRPC/XMLRPCModule.cs index 0003af2..385f5ad 100644 --- a/OpenSim/Region/CoreModules/Scripting/XMLRPC/XMLRPCModule.cs +++ b/OpenSim/Region/CoreModules/Scripting/XMLRPC/XMLRPCModule.cs @@ -40,6 +40,7 @@ using OpenSim.Framework.Servers; using OpenSim.Framework.Servers.HttpServer; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; +using Mono.Addins; /***************************************************** * @@ -76,7 +77,8 @@ using OpenSim.Region.Framework.Scenes; namespace OpenSim.Region.CoreModules.Scripting.XMLRPC { - public class XMLRPCModule : IRegionModule, IXMLRPC + [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "XMLRPCModule")] + public class XMLRPCModule : ISharedRegionModule, IXMLRPC { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); @@ -86,6 +88,10 @@ namespace OpenSim.Region.CoreModules.Scripting.XMLRPC private Dictionary m_openChannels; private Dictionary m_pendingSRDResponses; private int m_remoteDataPort = 0; + public int Port + { + get { return m_remoteDataPort; } + } private Dictionary m_rpcPending; private Dictionary m_rpcPendingResponses; @@ -94,34 +100,24 @@ namespace OpenSim.Region.CoreModules.Scripting.XMLRPC private int RemoteReplyScriptWait = 300; private object XMLRPCListLock = new object(); - #region IRegionModule Members + #region ISharedRegionModule Members - public void Initialise(Scene scene, IConfigSource config) + public void Initialise(IConfigSource config) { // We need to create these early because the scripts might be calling // But since this gets called for every region, we need to make sure they // get called only one time (or we lose any open channels) - if (null == m_openChannels) - { - m_openChannels = new Dictionary(); - m_rpcPending = new Dictionary(); - m_rpcPendingResponses = new Dictionary(); - m_pendingSRDResponses = new Dictionary(); + m_openChannels = new Dictionary(); + m_rpcPending = new Dictionary(); + m_rpcPendingResponses = new Dictionary(); + m_pendingSRDResponses = new Dictionary(); - try - { - m_remoteDataPort = config.Configs["XMLRPC"].GetInt("XmlRpcPort", m_remoteDataPort); - } - catch (Exception) - { - } + try + { + m_remoteDataPort = config.Configs["XMLRPC"].GetInt("XmlRpcPort", m_remoteDataPort); } - - if (!m_scenes.Contains(scene)) + catch (Exception) { - m_scenes.Add(scene); - - scene.RegisterModuleInterface(this); } } @@ -131,32 +127,56 @@ namespace OpenSim.Region.CoreModules.Scripting.XMLRPC { // Start http server // Attach xmlrpc handlers -// m_log.InfoFormat( -// "[XML RPC MODULE]: Starting up XMLRPC Server on port {0} for llRemoteData commands.", -// m_remoteDataPort); + // m_log.InfoFormat( + // "[XML RPC MODULE]: Starting up XMLRPC Server on port {0} for llRemoteData commands.", + // m_remoteDataPort); IHttpServer httpServer = MainServer.GetHttpServer((uint)m_remoteDataPort); httpServer.AddXmlRPCHandler("llRemoteData", XmlRpcRemoteData); } } - public void Close() + public void AddRegion(Scene scene) + { + if (!IsEnabled()) + return; + + if (!m_scenes.Contains(scene)) + { + m_scenes.Add(scene); + + scene.RegisterModuleInterface(this); + } + } + + public void RegionLoaded(Scene scene) { } - public string Name + public void RemoveRegion(Scene scene) { - get { return m_name; } + if (!IsEnabled()) + return; + + if (m_scenes.Contains(scene)) + { + scene.UnregisterModuleInterface(this); + m_scenes.Remove(scene); + } } - public bool IsSharedModule + public void Close() { - get { return true; } } - public int Port + public string Name { - get { return m_remoteDataPort; } + get { return m_name; } + } + + public Type ReplaceableInterface + { + get { return null; } } #endregion -- cgit v1.1