aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Communications/OGS1/OGS1GridServices.cs4
-rw-r--r--OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml2
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Land/LocalLandServiceConnector.cs135
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Land/RemoteLandServiceConnector.cs116
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Neighbour/RemoteNeighourServiceConnector.cs2
-rw-r--r--OpenSim/Server/Handlers/Land/LandHandlers.cs94
-rw-r--r--OpenSim/Server/Handlers/Land/LandServiceInConnector.cs66
-rw-r--r--OpenSim/Services/Connectors/Land/LandServiceConnector.cs125
-rw-r--r--OpenSim/Services/Interfaces/ILandService.cs38
-rw-r--r--OpenSim/SimulatorServices/LandServiceInConnectorModule.cs137
-rw-r--r--OpenSim/SimulatorServices/Resources/SimulatorServices.addin.xml1
11 files changed, 718 insertions, 2 deletions
diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
index f82a6a1..a526bb2 100644
--- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
+++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
@@ -94,7 +94,9 @@ namespace OpenSim.Region.Communications.OGS1
94 // httpServer.AddXmlRPCHandler("expect_user", ExpectUser); 94 // httpServer.AddXmlRPCHandler("expect_user", ExpectUser);
95 // httpServer.AddXmlRPCHandler("logoff_user", LogOffUser); 95 // httpServer.AddXmlRPCHandler("logoff_user", LogOffUser);
96 httpServer.AddXmlRPCHandler("check", PingCheckReply); 96 httpServer.AddXmlRPCHandler("check", PingCheckReply);
97 httpServer.AddXmlRPCHandler("land_data", LandData); 97
98 // Retired into the new service connectors, 6/14/09
99 //httpServer.AddXmlRPCHandler("land_data", LandData);
98 100
99 } 101 }
100 102
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 @@
28 <RegionModule id="HGInventoryBroker" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory.HGInventoryBroker" /> 28 <RegionModule id="HGInventoryBroker" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory.HGInventoryBroker" />
29 <RegionModule id="LocalNeighbourServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour.LocalNeighbourServicesConnector" /> 29 <RegionModule id="LocalNeighbourServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour.LocalNeighbourServicesConnector" />
30 <RegionModule id="RemoteNeighbourServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour.RemoteNeighbourServicesConnector" /> 30 <RegionModule id="RemoteNeighbourServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour.RemoteNeighbourServicesConnector" />
31 <RegionModule id="LocalLandServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Land.LocalLandServicesConnector" />
32 <RegionModule id="RemoteLandServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Land.RemoteLandServicesConnector" />
31 </Extension> 33 </Extension>
32 34
33 <Extension path = "/OpenSim/WindModule"> 35 <Extension path = "/OpenSim/WindModule">
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 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using log4net;
29using Nini.Config;
30using System;
31using System.Collections.Generic;
32using System.Reflection;
33using OpenSim.Framework;
34using OpenSim.Server.Base;
35using OpenSim.Region.Framework.Interfaces;
36using OpenSim.Region.Framework.Scenes;
37using OpenSim.Services.Interfaces;
38
39namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Land
40{
41 public class LocalLandServicesConnector :
42 ISharedRegionModule, ILandService
43 {
44 private static readonly ILog m_log =
45 LogManager.GetLogger(
46 MethodBase.GetCurrentMethod().DeclaringType);
47
48 private List<Scene> m_Scenes = new List<Scene>();
49
50 private bool m_Enabled = false;
51
52 public LocalLandServicesConnector()
53 {
54 }
55
56 public LocalLandServicesConnector(List<Scene> scenes)
57 {
58 m_Scenes = scenes;
59 }
60
61 #region ISharedRegionModule
62
63 public string Name
64 {
65 get { return "LocalLandServicesConnector"; }
66 }
67
68 public void Initialise(IConfigSource source)
69 {
70 IConfig moduleConfig = source.Configs["Modules"];
71 if (moduleConfig != null)
72 {
73 string name = moduleConfig.GetString("LandServices", this.Name);
74 if (name == Name)
75 {
76 m_Enabled = true;
77 m_log.Info("[LAND CONNECTOR]: Local land connector enabled");
78 }
79 }
80 }
81
82 public void Close()
83 {
84 }
85
86 public void AddRegion(Scene scene)
87 {
88 m_Scenes.Add(scene);
89
90 if (!m_Enabled)
91 return;
92
93 scene.RegisterModuleInterface<ILandService>(this);
94 }
95
96 public void RegionLoaded(Scene scene)
97 {
98 }
99
100 public void PostInitialise()
101 {
102 }
103
104 public void RemoveRegion(Scene scene)
105 {
106 if (m_Scenes.Contains(scene))
107 m_Scenes.Remove(scene);
108 }
109
110 #endregion ISharedRegionModule
111
112 #region ILandService
113
114 public LandData GetLandData(ulong regionHandle, uint x, uint y)
115 {
116 m_log.DebugFormat("[LAND CONNECTOR]: request for land data in {0} at {1}, {2}",
117 regionHandle, x, y);
118
119 foreach (Scene s in m_Scenes)
120 {
121 if (s.RegionInfo.RegionHandle == regionHandle)
122 {
123 LandData land = s.GetLandData(x, y);
124 return land;
125 }
126 }
127
128 m_log.Debug("[LAND CONNECTOR]: didn't find land data locally.");
129 return null;
130
131 }
132
133 #endregion ILandService
134 }
135}
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 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using log4net;
29using System;
30using System.Collections.Generic;
31using System.Reflection;
32using Nini.Config;
33using OpenSim.Framework;
34using OpenSim.Services.Connectors;
35using OpenSim.Region.Framework.Interfaces;
36using OpenSim.Region.Framework.Scenes;
37using OpenSim.Services.Interfaces;
38using OpenSim.Server.Base;
39
40namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Land
41{
42 public class RemoteLandServicesConnector :
43 LandServicesConnector, ISharedRegionModule, ILandService
44 {
45 private static readonly ILog m_log =
46 LogManager.GetLogger(
47 MethodBase.GetCurrentMethod().DeclaringType);
48
49 private bool m_Enabled = false;
50 private LocalLandServicesConnector m_LocalService;
51
52 public string Name
53 {
54 get { return "RemoteLandServicesConnector"; }
55 }
56
57 public void Initialise(IConfigSource source)
58 {
59 IConfig moduleConfig = source.Configs["Modules"];
60 if (moduleConfig != null)
61 {
62 string name = moduleConfig.GetString("LandServices", "");
63 if (name == Name)
64 {
65 m_LocalService = new LocalLandServicesConnector();
66
67 m_Enabled = true;
68
69 m_log.Info("[LAND CONNECTOR]: Remote Land connector enabled");
70 }
71 }
72 }
73
74 public void PostInitialise()
75 {
76 }
77
78 public void Close()
79 {
80 }
81
82 public void AddRegion(Scene scene)
83 {
84 if (!m_Enabled)
85 return;
86
87 m_MapService = scene.CommsManager.GridService;
88 m_LocalService.AddRegion(scene);
89 scene.RegisterModuleInterface<ILandService>(this);
90 }
91
92 public void RemoveRegion(Scene scene)
93 {
94 if (m_Enabled)
95 m_LocalService.RemoveRegion(scene);
96 }
97
98 public void RegionLoaded(Scene scene)
99 {
100 }
101
102
103 #region ILandService
104
105 public override LandData GetLandData(ulong regionHandle, uint x, uint y)
106 {
107 LandData land = m_LocalService.GetLandData(regionHandle, x, y);
108 if (land != null)
109 return land;
110
111 return base.GetLandData(regionHandle, x, y);
112
113 }
114 #endregion ILandService
115 }
116}
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
120 120
121 public void RemoveRegion(Scene scene) 121 public void RemoveRegion(Scene scene)
122 { 122 {
123 if (m_Enabled && m_Scenes.Contains(scene)) 123 if (m_Enabled)
124 m_LocalService.RemoveRegion(scene); 124 m_LocalService.RemoveRegion(scene);
125 } 125 }
126 126
diff --git a/OpenSim/Server/Handlers/Land/LandHandlers.cs b/OpenSim/Server/Handlers/Land/LandHandlers.cs
new file mode 100644
index 0000000..b15d7f6
--- /dev/null
+++ b/OpenSim/Server/Handlers/Land/LandHandlers.cs
@@ -0,0 +1,94 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Collections;
30using System.IO;
31using System.Reflection;
32using System.Net;
33using System.Text;
34
35using OpenSim.Server.Base;
36using OpenSim.Server.Handlers.Base;
37using OpenSim.Services.Interfaces;
38using OpenSim.Framework;
39using OpenSim.Framework.Servers.HttpServer;
40
41using OpenMetaverse;
42using OpenMetaverse.StructuredData;
43using Nwc.XmlRpc;
44using Nini.Config;
45using log4net;
46
47
48namespace OpenSim.Server.Handlers.Land
49{
50 public class LandHandlers
51 {
52 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
53
54 private ILandService m_LocalService;
55
56 public LandHandlers(ILandService service)
57 {
58 m_LocalService = service;
59 }
60
61 public XmlRpcResponse GetLandData(XmlRpcRequest request, IPEndPoint remoteClient)
62 {
63 Hashtable requestData = (Hashtable)request.Params[0];
64 ulong regionHandle = Convert.ToUInt64(requestData["region_handle"]);
65 uint x = Convert.ToUInt32(requestData["x"]);
66 uint y = Convert.ToUInt32(requestData["y"]);
67 m_log.DebugFormat("[LAND HANDLER]: Got request for land data at {0}, {1} for region {2}", x, y, regionHandle);
68
69 LandData landData = m_LocalService.GetLandData(regionHandle, x, y);
70 Hashtable hash = new Hashtable();
71 if (landData != null)
72 {
73 // for now, only push out the data we need for answering a ParcelInfoReqeust
74 hash["AABBMax"] = landData.AABBMax.ToString();
75 hash["AABBMin"] = landData.AABBMin.ToString();
76 hash["Area"] = landData.Area.ToString();
77 hash["AuctionID"] = landData.AuctionID.ToString();
78 hash["Description"] = landData.Description;
79 hash["Flags"] = landData.Flags.ToString();
80 hash["GlobalID"] = landData.GlobalID.ToString();
81 hash["Name"] = landData.Name;
82 hash["OwnerID"] = landData.OwnerID.ToString();
83 hash["SalePrice"] = landData.SalePrice.ToString();
84 hash["SnapshotID"] = landData.SnapshotID.ToString();
85 hash["UserLocation"] = landData.UserLocation.ToString();
86 }
87
88 XmlRpcResponse response = new XmlRpcResponse();
89 response.Value = hash;
90 return response;
91 }
92 }
93
94}
diff --git a/OpenSim/Server/Handlers/Land/LandServiceInConnector.cs b/OpenSim/Server/Handlers/Land/LandServiceInConnector.cs
new file mode 100644
index 0000000..f550b10
--- /dev/null
+++ b/OpenSim/Server/Handlers/Land/LandServiceInConnector.cs
@@ -0,0 +1,66 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Collections.Generic;
30using System.Reflection;
31using log4net;
32using Nini.Config;
33using OpenSim.Server.Base;
34using OpenSim.Services.Interfaces;
35using OpenSim.Framework;
36using OpenSim.Framework.Servers.HttpServer;
37using OpenSim.Server.Handlers.Base;
38
39namespace OpenSim.Server.Handlers.Land
40{
41 public class LandServiceInConnector : ServiceConnector
42 {
43 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
44
45 private ILandService m_LandService;
46 // TODO : private IAuthenticationService m_AuthenticationService;
47
48 public LandServiceInConnector(IConfigSource source, IHttpServer server, ILandService service, IScene scene) :
49 base(source, server)
50 {
51 m_LandService = service;
52 if (m_LandService == null)
53 {
54 m_log.Error("[LAND IN CONNECTOR]: Land service was not provided");
55 return;
56 }
57
58 //bool authentication = neighbourConfig.GetBoolean("RequireAuthentication", false);
59 //if (authentication)
60 // m_AuthenticationService = scene.RequestModuleInterface<IAuthenticationService>();
61
62 LandHandlers landHandlers = new LandHandlers(m_LandService);
63 server.AddXmlRPCHandler("land_data", landHandlers.GetLandData, false);
64 }
65 }
66}
diff --git a/OpenSim/Services/Connectors/Land/LandServiceConnector.cs b/OpenSim/Services/Connectors/Land/LandServiceConnector.cs
new file mode 100644
index 0000000..e9375f5
--- /dev/null
+++ b/OpenSim/Services/Connectors/Land/LandServiceConnector.cs
@@ -0,0 +1,125 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using log4net;
29using System;
30using System.Collections;
31using System.Collections.Generic;
32using System.IO;
33using System.Reflection;
34using Nini.Config;
35using OpenSim.Framework;
36using OpenSim.Framework.Communications;
37using OpenSim.Framework.Servers.HttpServer;
38using OpenSim.Services.Interfaces;
39using OpenMetaverse;
40using Nwc.XmlRpc;
41
42namespace OpenSim.Services.Connectors
43{
44 public class LandServicesConnector : ILandService
45 {
46 private static readonly ILog m_log =
47 LogManager.GetLogger(
48 MethodBase.GetCurrentMethod().DeclaringType);
49
50 protected IGridServices m_MapService = null;
51
52 public LandServicesConnector()
53 {
54 }
55
56 public LandServicesConnector(IGridServices gridServices)
57 {
58 Initialise(gridServices);
59 }
60
61 public virtual void Initialise(IGridServices gridServices)
62 {
63 m_MapService = gridServices;
64 }
65
66 public virtual LandData GetLandData(ulong regionHandle, uint x, uint y)
67 {
68 LandData landData = null;
69 Hashtable hash = new Hashtable();
70 hash["region_handle"] = regionHandle.ToString();
71 hash["x"] = x.ToString();
72 hash["y"] = y.ToString();
73
74 IList paramList = new ArrayList();
75 paramList.Add(hash);
76
77 try
78 {
79 RegionInfo info = m_MapService.RequestNeighbourInfo(regionHandle);
80 if (info != null) // just to be sure
81 {
82 XmlRpcRequest request = new XmlRpcRequest("land_data", paramList);
83 string uri = "http://" + info.ExternalEndPoint.Address + ":" + info.HttpPort + "/";
84 XmlRpcResponse response = request.Send(uri, 10000);
85 if (response.IsFault)
86 {
87 m_log.ErrorFormat("[LAND CONNECTOR] remote call returned an error: {0}", response.FaultString);
88 }
89 else
90 {
91 hash = (Hashtable)response.Value;
92 try
93 {
94 landData = new LandData();
95 landData.AABBMax = Vector3.Parse((string)hash["AABBMax"]);
96 landData.AABBMin = Vector3.Parse((string)hash["AABBMin"]);
97 landData.Area = Convert.ToInt32(hash["Area"]);
98 landData.AuctionID = Convert.ToUInt32(hash["AuctionID"]);
99 landData.Description = (string)hash["Description"];
100 landData.Flags = Convert.ToUInt32(hash["Flags"]);
101 landData.GlobalID = new UUID((string)hash["GlobalID"]);
102 landData.Name = (string)hash["Name"];
103 landData.OwnerID = new UUID((string)hash["OwnerID"]);
104 landData.SalePrice = Convert.ToInt32(hash["SalePrice"]);
105 landData.SnapshotID = new UUID((string)hash["SnapshotID"]);
106 landData.UserLocation = Vector3.Parse((string)hash["UserLocation"]);
107 m_log.DebugFormat("[OGS1 GRID SERVICES] Got land data for parcel {0}", landData.Name);
108 }
109 catch (Exception e)
110 {
111 m_log.Error("[LAND CONNECTOR] Got exception while parsing land-data:", e);
112 }
113 }
114 }
115 else m_log.WarnFormat("[LAND CONNECTOR] Couldn't find region with handle {0}", regionHandle);
116 }
117 catch (Exception e)
118 {
119 m_log.ErrorFormat("[LAND CONNECTOR] Couldn't contact region {0}: {1}", regionHandle, e);
120 }
121
122 return landData;
123 }
124 }
125}
diff --git a/OpenSim/Services/Interfaces/ILandService.cs b/OpenSim/Services/Interfaces/ILandService.cs
new file mode 100644
index 0000000..51cc93b
--- /dev/null
+++ b/OpenSim/Services/Interfaces/ILandService.cs
@@ -0,0 +1,38 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using OpenSim.Framework;
30using OpenMetaverse;
31
32namespace OpenSim.Services.Interfaces
33{
34 public interface ILandService
35 {
36 LandData GetLandData(ulong regionHandle, uint x, uint y);
37 }
38}
diff --git a/OpenSim/SimulatorServices/LandServiceInConnectorModule.cs b/OpenSim/SimulatorServices/LandServiceInConnectorModule.cs
new file mode 100644
index 0000000..58d276d
--- /dev/null
+++ b/OpenSim/SimulatorServices/LandServiceInConnectorModule.cs
@@ -0,0 +1,137 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Reflection;
30using System.Collections.Generic;
31using log4net;
32using Nini.Config;
33using OpenSim.Framework;
34using OpenSim.Framework.Servers.HttpServer;
35using OpenSim.Region.Framework.Scenes;
36using OpenSim.Region.Framework.Interfaces;
37using OpenSim.Server.Base;
38using OpenSim.Server.Handlers.Base;
39using OpenSim.Services.Interfaces;
40
41
42namespace OpenSim.SimulatorServices
43{
44 public class LandServiceInConnectorModule : ISharedRegionModule, ILandService
45 {
46 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
47 private static bool m_Enabled = false;
48 private static bool m_Registered = false;
49
50 private IConfigSource m_Config;
51 private List<Scene> m_Scenes = new List<Scene>();
52
53 #region IRegionModule interface
54
55 public void Initialise(IConfigSource config)
56 {
57 m_Config = config;
58
59 IConfig moduleConfig = config.Configs["Modules"];
60 if (moduleConfig != null)
61 {
62 m_Enabled = moduleConfig.GetBoolean("LandServiceInConnector", false);
63 if (m_Enabled)
64 {
65 m_log.Info("[LAND IN CONNECTOR]: LandServiceInConnector enabled");
66 }
67
68 }
69
70 }
71
72 public void PostInitialise()
73 {
74 if (!m_Enabled)
75 return;
76
77 m_log.Info("[LAND IN CONNECTOR]: Starting...");
78 }
79
80 public void Close()
81 {
82 }
83
84 public string Name
85 {
86 get { return "LandServiceInConnectorModule"; }
87 }
88
89 public void AddRegion(Scene scene)
90 {
91 if (!m_Enabled)
92 return;
93
94 if (!m_Registered)
95 {
96 m_Registered = true;
97 Object[] args = new Object[] { m_Config, scene.CommsManager.HttpServer, this, scene };
98 ServerUtils.LoadPlugin<IServiceConnector>("OpenSim.Server.Handlers.dll:LandServiceInConnector", args);
99 }
100
101 m_Scenes.Add(scene);
102
103 }
104
105 public void RemoveRegion(Scene scene)
106 {
107 if (m_Enabled && m_Scenes.Contains(scene))
108 m_Scenes.Remove(scene);
109 }
110
111 public void RegionLoaded(Scene scene)
112 {
113 }
114
115 #endregion
116
117 #region ILandService
118
119 public LandData GetLandData(ulong regionHandle, uint x, uint y)
120 {
121 m_log.DebugFormat("[LAND IN CONNECTOR]: GetLandData for {0}. Count = {2}",
122 regionHandle, m_Scenes.Count);
123 foreach (Scene s in m_Scenes)
124 {
125 if (s.RegionInfo.RegionHandle == regionHandle)
126 {
127 m_log.Debug("[LAND IN CONNECTOR]: Found region to GetLandData from");
128 return s.GetLandData(x, y);
129 }
130 }
131 m_log.DebugFormat("[LAND IN CONNECTOR]: region handle {0} not found", regionHandle);
132 return null;
133 }
134
135 #endregion ILandService
136 }
137}
diff --git a/OpenSim/SimulatorServices/Resources/SimulatorServices.addin.xml b/OpenSim/SimulatorServices/Resources/SimulatorServices.addin.xml
index c83af7b..18b9423 100644
--- a/OpenSim/SimulatorServices/Resources/SimulatorServices.addin.xml
+++ b/OpenSim/SimulatorServices/Resources/SimulatorServices.addin.xml
@@ -11,6 +11,7 @@
11 <RegionModule id="RegionAssetService" type="OpenSim.SimulatorServices.RegionAssetService" /> 11 <RegionModule id="RegionAssetService" type="OpenSim.SimulatorServices.RegionAssetService" />
12 <RegionModule id="RegionInventoryService" type="OpenSim.SimulatorServices.RegionInventoryService" /> 12 <RegionModule id="RegionInventoryService" type="OpenSim.SimulatorServices.RegionInventoryService" />
13 <RegionModule id="NeighbourServiceInConnectorModule" type="OpenSim.SimulatorServices.NeighbourServiceInConnectorModule" /> 13 <RegionModule id="NeighbourServiceInConnectorModule" type="OpenSim.SimulatorServices.NeighbourServiceInConnectorModule" />
14 <RegionModule id="LandServiceInConnectorModule" type="OpenSim.SimulatorServices.LandServiceInConnectorModule" />
14 </Extension> 15 </Extension>
15 16
16</Addin> 17</Addin>