From 380f59d0ffc3a1ec8cc20972b2475faf76f341fb Mon Sep 17 00:00:00 2001
From: diva
Date: Sun, 14 Jun 2009 23:00:23 +0000
Subject: Factoring out "land_data" / RequestLandData that was hanging off of
IGridServices, erroneously. Not sure when this is used, but now it is
implemented in the new model of service connectors. Hopefully it works.
---
.../Resources/CoreModulePlugin.addin.xml | 2 +
.../Land/LocalLandServiceConnector.cs | 135 +++++++++++++++++++++
.../Land/RemoteLandServiceConnector.cs | 116 ++++++++++++++++++
.../Neighbour/RemoteNeighourServiceConnector.cs | 2 +-
4 files changed, 254 insertions(+), 1 deletion(-)
create mode 100644 OpenSim/Region/CoreModules/ServiceConnectorsOut/Land/LocalLandServiceConnector.cs
create mode 100644 OpenSim/Region/CoreModules/ServiceConnectorsOut/Land/RemoteLandServiceConnector.cs
(limited to 'OpenSim/Region/CoreModules')
diff --git a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml
index d779f29..1c79bf4 100644
--- a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml
+++ b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml
@@ -28,6 +28,8 @@
+
+
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Land/LocalLandServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Land/LocalLandServiceConnector.cs
new file mode 100644
index 0000000..a9d9663
--- /dev/null
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Land/LocalLandServiceConnector.cs
@@ -0,0 +1,135 @@
+/*
+ * 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 OpenSimulator 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 Nini.Config;
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using OpenSim.Framework;
+using OpenSim.Server.Base;
+using OpenSim.Region.Framework.Interfaces;
+using OpenSim.Region.Framework.Scenes;
+using OpenSim.Services.Interfaces;
+
+namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Land
+{
+ public class LocalLandServicesConnector :
+ ISharedRegionModule, ILandService
+ {
+ private static readonly ILog m_log =
+ LogManager.GetLogger(
+ MethodBase.GetCurrentMethod().DeclaringType);
+
+ private List m_Scenes = new List();
+
+ private bool m_Enabled = false;
+
+ public LocalLandServicesConnector()
+ {
+ }
+
+ public LocalLandServicesConnector(List scenes)
+ {
+ m_Scenes = scenes;
+ }
+
+ #region ISharedRegionModule
+
+ public string Name
+ {
+ get { return "LocalLandServicesConnector"; }
+ }
+
+ public void Initialise(IConfigSource source)
+ {
+ IConfig moduleConfig = source.Configs["Modules"];
+ if (moduleConfig != null)
+ {
+ string name = moduleConfig.GetString("LandServices", this.Name);
+ if (name == Name)
+ {
+ m_Enabled = true;
+ m_log.Info("[LAND CONNECTOR]: Local land connector enabled");
+ }
+ }
+ }
+
+ public void Close()
+ {
+ }
+
+ public void AddRegion(Scene scene)
+ {
+ m_Scenes.Add(scene);
+
+ if (!m_Enabled)
+ return;
+
+ scene.RegisterModuleInterface(this);
+ }
+
+ public void RegionLoaded(Scene scene)
+ {
+ }
+
+ public void PostInitialise()
+ {
+ }
+
+ public void RemoveRegion(Scene scene)
+ {
+ if (m_Scenes.Contains(scene))
+ m_Scenes.Remove(scene);
+ }
+
+ #endregion ISharedRegionModule
+
+ #region ILandService
+
+ public LandData GetLandData(ulong regionHandle, uint x, uint y)
+ {
+ m_log.DebugFormat("[LAND CONNECTOR]: request for land data in {0} at {1}, {2}",
+ regionHandle, x, y);
+
+ foreach (Scene s in m_Scenes)
+ {
+ if (s.RegionInfo.RegionHandle == regionHandle)
+ {
+ LandData land = s.GetLandData(x, y);
+ return land;
+ }
+ }
+
+ m_log.Debug("[LAND CONNECTOR]: didn't find land data locally.");
+ return null;
+
+ }
+
+ #endregion ILandService
+ }
+}
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Land/RemoteLandServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Land/RemoteLandServiceConnector.cs
new file mode 100644
index 0000000..f64a1ce
--- /dev/null
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Land/RemoteLandServiceConnector.cs
@@ -0,0 +1,116 @@
+/*
+ * 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 OpenSimulator 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 System.Collections.Generic;
+using System.Reflection;
+using Nini.Config;
+using OpenSim.Framework;
+using OpenSim.Services.Connectors;
+using OpenSim.Region.Framework.Interfaces;
+using OpenSim.Region.Framework.Scenes;
+using OpenSim.Services.Interfaces;
+using OpenSim.Server.Base;
+
+namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Land
+{
+ public class RemoteLandServicesConnector :
+ LandServicesConnector, ISharedRegionModule, ILandService
+ {
+ private static readonly ILog m_log =
+ LogManager.GetLogger(
+ MethodBase.GetCurrentMethod().DeclaringType);
+
+ private bool m_Enabled = false;
+ private LocalLandServicesConnector m_LocalService;
+
+ public string Name
+ {
+ get { return "RemoteLandServicesConnector"; }
+ }
+
+ public void Initialise(IConfigSource source)
+ {
+ IConfig moduleConfig = source.Configs["Modules"];
+ if (moduleConfig != null)
+ {
+ string name = moduleConfig.GetString("LandServices", "");
+ if (name == Name)
+ {
+ m_LocalService = new LocalLandServicesConnector();
+
+ m_Enabled = true;
+
+ m_log.Info("[LAND CONNECTOR]: Remote Land connector enabled");
+ }
+ }
+ }
+
+ public void PostInitialise()
+ {
+ }
+
+ public void Close()
+ {
+ }
+
+ public void AddRegion(Scene scene)
+ {
+ if (!m_Enabled)
+ return;
+
+ m_MapService = scene.CommsManager.GridService;
+ m_LocalService.AddRegion(scene);
+ scene.RegisterModuleInterface(this);
+ }
+
+ public void RemoveRegion(Scene scene)
+ {
+ if (m_Enabled)
+ m_LocalService.RemoveRegion(scene);
+ }
+
+ public void RegionLoaded(Scene scene)
+ {
+ }
+
+
+ #region ILandService
+
+ public override LandData GetLandData(ulong regionHandle, uint x, uint y)
+ {
+ LandData land = m_LocalService.GetLandData(regionHandle, x, y);
+ if (land != null)
+ return land;
+
+ return base.GetLandData(regionHandle, x, y);
+
+ }
+ #endregion ILandService
+ }
+}
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Neighbour/RemoteNeighourServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Neighbour/RemoteNeighourServiceConnector.cs
index d584a98..dc876e3 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Neighbour/RemoteNeighourServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Neighbour/RemoteNeighourServiceConnector.cs
@@ -120,7 +120,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour
public void RemoveRegion(Scene scene)
{
- if (m_Enabled && m_Scenes.Contains(scene))
+ if (m_Enabled)
m_LocalService.RemoveRegion(scene);
}
--
cgit v1.1