aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Services/Connectors/Simulation
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Services/Connectors/Simulation')
-rw-r--r--OpenSim/Services/Connectors/Simulation/EstateDataService.cs139
-rw-r--r--OpenSim/Services/Connectors/Simulation/SimulationDataService.cs197
-rw-r--r--OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs74
3 files changed, 60 insertions, 350 deletions
diff --git a/OpenSim/Services/Connectors/Simulation/EstateDataService.cs b/OpenSim/Services/Connectors/Simulation/EstateDataService.cs
deleted file mode 100644
index cdcdecf..0000000
--- a/OpenSim/Services/Connectors/Simulation/EstateDataService.cs
+++ /dev/null
@@ -1,139 +0,0 @@
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 OpenMetaverse;
31using log4net;
32using Mono.Addins;
33using Nini.Config;
34using System.Reflection;
35using OpenSim.Services.Base;
36using OpenSim.Services.Interfaces;
37using OpenSim.Data;
38using OpenSim.Framework;
39using OpenSim.Region.Framework.Interfaces;
40using OpenSim.Region.Framework.Scenes;
41
42namespace OpenSim.Services.Connectors
43{
44 public class EstateDataService : ServiceBase, IEstateDataService
45 {
46// private static readonly ILog m_log =
47// LogManager.GetLogger(
48// MethodBase.GetCurrentMethod().DeclaringType);
49
50 protected IEstateDataStore m_database;
51
52 public EstateDataService(IConfigSource config)
53 : base(config)
54 {
55 string dllName = String.Empty;
56 string connString = String.Empty;
57
58 // Try reading the [DatabaseService] section, if it exists
59 IConfig dbConfig = config.Configs["DatabaseService"];
60 if (dbConfig != null)
61 {
62 dllName = dbConfig.GetString("StorageProvider", String.Empty);
63 connString = dbConfig.GetString("ConnectionString", String.Empty);
64 connString = dbConfig.GetString("EstateConnectionString", connString);
65 }
66
67 // Try reading the [EstateDataStore] section, if it exists
68 IConfig estConfig = config.Configs["EstateDataStore"];
69 if (estConfig != null)
70 {
71 dllName = estConfig.GetString("StorageProvider", dllName);
72 connString = estConfig.GetString("ConnectionString", connString);
73 }
74
75 // We tried, but this doesn't exist. We can't proceed
76 if (dllName == String.Empty)
77 throw new Exception("No StorageProvider configured");
78
79 m_database = LoadPlugin<IEstateDataStore>(dllName, new Object[] { connString });
80 if (m_database == null)
81 throw new Exception("Could not find a storage interface in the given module");
82 }
83
84 public EstateSettings LoadEstateSettings(UUID regionID, bool create)
85 {
86 return m_database.LoadEstateSettings(regionID, create);
87 }
88
89 public EstateSettings LoadEstateSettings(int estateID)
90 {
91 return m_database.LoadEstateSettings(estateID);
92 }
93
94 public EstateSettings CreateNewEstate()
95 {
96 return m_database.CreateNewEstate();
97 }
98
99 public List<EstateSettings> LoadEstateSettingsAll()
100 {
101 return m_database.LoadEstateSettingsAll();
102 }
103
104 public void StoreEstateSettings(EstateSettings es)
105 {
106 m_database.StoreEstateSettings(es);
107 }
108
109 public List<int> GetEstates(string search)
110 {
111 return m_database.GetEstates(search);
112 }
113
114 public List<int> GetEstatesAll()
115 {
116 return m_database.GetEstatesAll();
117 }
118
119 public List<int> GetEstatesByOwner(UUID ownerID)
120 {
121 return m_database.GetEstatesByOwner(ownerID);
122 }
123
124 public bool LinkRegion(UUID regionID, int estateID)
125 {
126 return m_database.LinkRegion(regionID, estateID);
127 }
128
129 public List<UUID> GetRegions(int estateID)
130 {
131 return m_database.GetRegions(estateID);
132 }
133
134 public bool DeleteEstate(int estateID)
135 {
136 return m_database.DeleteEstate(estateID);
137 }
138 }
139}
diff --git a/OpenSim/Services/Connectors/Simulation/SimulationDataService.cs b/OpenSim/Services/Connectors/Simulation/SimulationDataService.cs
deleted file mode 100644
index 4759838..0000000
--- a/OpenSim/Services/Connectors/Simulation/SimulationDataService.cs
+++ /dev/null
@@ -1,197 +0,0 @@
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 OpenMetaverse;
31using log4net;
32using Mono.Addins;
33using Nini.Config;
34using System.Reflection;
35using OpenSim.Services.Base;
36using OpenSim.Services.Interfaces;
37using OpenSim.Data;
38using OpenSim.Framework;
39using OpenSim.Region.Framework.Interfaces;
40using OpenSim.Region.Framework.Scenes;
41
42namespace OpenSim.Services.Connectors
43{
44 public class SimulationDataService : ServiceBase, ISimulationDataService
45 {
46// private static readonly ILog m_log =
47// LogManager.GetLogger(
48// MethodBase.GetCurrentMethod().DeclaringType);
49
50 protected ISimulationDataStore m_database;
51
52 public SimulationDataService(IConfigSource config)
53 : base(config)
54 {
55 string dllName = String.Empty;
56 string connString = String.Empty;
57
58 // Try reading the [DatabaseService] section, if it exists
59 IConfig dbConfig = config.Configs["DatabaseService"];
60 if (dbConfig != null)
61 {
62 dllName = dbConfig.GetString("StorageProvider", String.Empty);
63 connString = dbConfig.GetString("ConnectionString", String.Empty);
64 }
65
66 // Try reading the [SimulationDataStore] section
67 IConfig simConfig = config.Configs["SimulationDataStore"];
68 if (simConfig != null)
69 {
70 dllName = simConfig.GetString("StorageProvider", dllName);
71 connString = simConfig.GetString("ConnectionString", connString);
72 }
73
74 // We tried, but this doesn't exist. We can't proceed
75 if (dllName == String.Empty)
76 throw new Exception("No StorageProvider configured");
77
78 m_database = LoadPlugin<ISimulationDataStore>(dllName, new Object[] { connString });
79 if (m_database == null)
80 throw new Exception("Could not find a storage interface in the given module");
81 }
82
83 public void StoreObject(SceneObjectGroup obj, UUID regionUUID)
84 {
85 m_database.StoreObject(obj, regionUUID);
86 }
87
88 public void RemoveObject(UUID uuid, UUID regionUUID)
89 {
90 m_database.RemoveObject(uuid, regionUUID);
91 }
92
93 public void StorePrimInventory(UUID primID, ICollection<TaskInventoryItem> items)
94 {
95 m_database.StorePrimInventory(primID, items);
96 }
97
98 public List<SceneObjectGroup> LoadObjects(UUID regionUUID)
99 {
100 return m_database.LoadObjects(regionUUID);
101 }
102
103 public void StoreTerrain(TerrainData terrain, UUID regionID)
104 {
105 m_database.StoreTerrain(terrain, regionID);
106 }
107
108 public void StoreTerrain(double[,] terrain, UUID regionID)
109 {
110 m_database.StoreTerrain(terrain, regionID);
111 }
112
113 public double[,] LoadTerrain(UUID regionID)
114 {
115 return m_database.LoadTerrain(regionID);
116 }
117
118 public TerrainData LoadTerrain(UUID regionID, int pSizeX, int pSizeY, int pSizeZ)
119 {
120 return m_database.LoadTerrain(regionID, pSizeX, pSizeY, pSizeZ);
121 }
122
123 public void StoreLandObject(ILandObject Parcel)
124 {
125 m_database.StoreLandObject(Parcel);
126 }
127
128 public void RemoveLandObject(UUID globalID)
129 {
130 m_database.RemoveLandObject(globalID);
131 }
132
133 public List<LandData> LoadLandObjects(UUID regionUUID)
134 {
135 return m_database.LoadLandObjects(regionUUID);
136 }
137
138 public void StoreRegionSettings(RegionSettings rs)
139 {
140 m_database.StoreRegionSettings(rs);
141 }
142
143 public RegionSettings LoadRegionSettings(UUID regionUUID)
144 {
145 return m_database.LoadRegionSettings(regionUUID);
146 }
147
148 public RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID)
149 {
150 return m_database.LoadRegionWindlightSettings(regionUUID);
151 }
152
153 public void StoreRegionWindlightSettings(RegionLightShareData wl)
154 {
155 m_database.StoreRegionWindlightSettings(wl);
156 }
157 public void RemoveRegionWindlightSettings(UUID regionID)
158 {
159 m_database.RemoveRegionWindlightSettings(regionID);
160 }
161
162 public string LoadRegionEnvironmentSettings(UUID regionUUID)
163 {
164 return m_database.LoadRegionEnvironmentSettings(regionUUID);
165 }
166
167 public void StoreRegionEnvironmentSettings(UUID regionUUID, string settings)
168 {
169 m_database.StoreRegionEnvironmentSettings(regionUUID, settings);
170 }
171
172 public void RemoveRegionEnvironmentSettings(UUID regionUUID)
173 {
174 m_database.RemoveRegionEnvironmentSettings(regionUUID);
175 }
176
177 public UUID[] GetObjectIDs(UUID regionID)
178 {
179 return m_database.GetObjectIDs(regionID);
180 }
181
182 public void SaveExtra(UUID regionID, string name, string val)
183 {
184 m_database.SaveExtra(regionID, name, val);
185 }
186
187 public void RemoveExtra(UUID regionID, string name)
188 {
189 m_database.RemoveExtra(regionID, name);
190 }
191
192 public Dictionary<string, string> GetExtra(UUID regionID)
193 {
194 return m_database.GetExtra(regionID);
195 }
196 }
197}
diff --git a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs
index 75c5b35..28b6de7 100644
--- a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs
+++ b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs
@@ -79,22 +79,32 @@ namespace OpenSim.Services.Connectors.Simulation
79 return "agent/"; 79 return "agent/";
80 } 80 }
81 81
82 protected virtual void PackData(OSDMap args, AgentCircuitData aCircuit, GridRegion destination, uint flags) 82 protected virtual void PackData(OSDMap args, GridRegion source, AgentCircuitData aCircuit, GridRegion destination, uint flags)
83 { 83 {
84 args["destination_x"] = OSD.FromString(destination.RegionLocX.ToString()); 84 if (source != null)
85 args["destination_y"] = OSD.FromString(destination.RegionLocY.ToString()); 85 {
86 args["destination_name"] = OSD.FromString(destination.RegionName); 86 args["source_x"] = OSD.FromString(source.RegionLocX.ToString());
87 args["destination_uuid"] = OSD.FromString(destination.RegionID.ToString()); 87 args["source_y"] = OSD.FromString(source.RegionLocY.ToString());
88 args["teleport_flags"] = OSD.FromString(flags.ToString()); 88 args["source_name"] = OSD.FromString(source.RegionName);
89 args["source_uuid"] = OSD.FromString(source.RegionID.ToString());
90 if (!String.IsNullOrEmpty(source.RawServerURI))
91 args["source_server_uri"] = OSD.FromString(source.RawServerURI);
92 }
93
94 args["destination_x"] = OSD.FromString(destination.RegionLocX.ToString());
95 args["destination_y"] = OSD.FromString(destination.RegionLocY.ToString());
96 args["destination_name"] = OSD.FromString(destination.RegionName);
97 args["destination_uuid"] = OSD.FromString(destination.RegionID.ToString());
98 args["teleport_flags"] = OSD.FromString(flags.ToString());
89 } 99 }
90 100
91 public bool CreateAgent(GridRegion destination, AgentCircuitData aCircuit, uint flags, out string reason) 101 public bool CreateAgent(GridRegion source, GridRegion destination, AgentCircuitData aCircuit, uint flags, out string reason)
92 { 102 {
93 string tmp = String.Empty; 103 string tmp = String.Empty;
94 return CreateAgent(destination, aCircuit, flags, out tmp, out reason); 104 return CreateAgent(source, destination, aCircuit, flags, out tmp, out reason);
95 } 105 }
96 106
97 public bool CreateAgent(GridRegion destination, AgentCircuitData aCircuit, uint flags, out string myipaddress, out string reason) 107 public bool CreateAgent(GridRegion source, GridRegion destination, AgentCircuitData aCircuit, uint flags, out string myipaddress, out string reason)
98 { 108 {
99 m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: Creating agent at {0}", destination.ServerURI); 109 m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: Creating agent at {0}", destination.ServerURI);
100 reason = String.Empty; 110 reason = String.Empty;
@@ -112,7 +122,7 @@ namespace OpenSim.Services.Connectors.Simulation
112 try 122 try
113 { 123 {
114 OSDMap args = aCircuit.PackAgentCircuitData(); 124 OSDMap args = aCircuit.PackAgentCircuitData();
115 PackData(args, aCircuit, destination, flags); 125 PackData(args, source, aCircuit, destination, flags);
116 126
117 OSDMap result = WebUtil.PostToServiceCompressed(uri, args, 30000); 127 OSDMap result = WebUtil.PostToServiceCompressed(uri, args, 30000);
118 bool success = result["success"].AsBoolean(); 128 bool success = result["success"].AsBoolean();
@@ -127,7 +137,7 @@ namespace OpenSim.Services.Connectors.Simulation
127 } 137 }
128 138
129 // Try the old version, uncompressed 139 // Try the old version, uncompressed
130 result = WebUtil.PostToService(uri, args, 30000); 140 result = WebUtil.PostToService(uri, args, 30000, false);
131 141
132 if (result["Success"].AsBoolean()) 142 if (result["Success"].AsBoolean())
133 { 143 {
@@ -273,9 +283,13 @@ namespace OpenSim.Services.Connectors.Simulation
273 } 283 }
274 284
275 285
286<<<<<<< HEAD
287 public bool QueryAccess(GridRegion destination, UUID agentID, string agentHomeURI, bool viaTeleport, Vector3 position, string myversion, List<UUID> featuresAvailable, out string version, out string reason)
288=======
276 /// <summary> 289 /// <summary>
277 /// </summary> 290 /// </summary>
278 public bool QueryAccess(GridRegion destination, UUID agentID, string agentHomeURI, bool viaTeleport, Vector3 position, string myversion, out string version, out string reason) 291 public bool QueryAccess(GridRegion destination, UUID agentID, string agentHomeURI, bool viaTeleport, Vector3 position, string myversion, out string version, out string reason)
292>>>>>>> avn/ubitvar
279 { 293 {
280 reason = "Failed to contact destination"; 294 reason = "Failed to contact destination";
281 version = "Unknown"; 295 version = "Unknown";
@@ -292,12 +306,22 @@ namespace OpenSim.Services.Connectors.Simulation
292 request.Add("viaTeleport", OSD.FromBoolean(viaTeleport)); 306 request.Add("viaTeleport", OSD.FromBoolean(viaTeleport));
293 request.Add("position", OSD.FromString(position.ToString())); 307 request.Add("position", OSD.FromString(position.ToString()));
294 request.Add("my_version", OSD.FromString(myversion)); 308 request.Add("my_version", OSD.FromString(myversion));
309<<<<<<< HEAD
310
311 OSDArray features = new OSDArray();
312 foreach (UUID feature in featuresAvailable)
313 features.Add(OSD.FromString(feature.ToString()));
314
315 request.Add("features", features);
316
317=======
318>>>>>>> avn/ubitvar
295 if (agentHomeURI != null) 319 if (agentHomeURI != null)
296 request.Add("agent_home_uri", OSD.FromString(agentHomeURI)); 320 request.Add("agent_home_uri", OSD.FromString(agentHomeURI));
297 321
298 try 322 try
299 { 323 {
300 OSDMap result = WebUtil.ServiceOSDRequest(uri, request, "QUERYACCESS", 30000, false); 324 OSDMap result = WebUtil.ServiceOSDRequest(uri, request, "QUERYACCESS", 30000, false, false);
301 bool success = result["success"].AsBoolean(); 325 bool success = result["success"].AsBoolean();
302 if (result.ContainsKey("_Result")) 326 if (result.ContainsKey("_Result"))
303 { 327 {
@@ -342,9 +366,22 @@ namespace OpenSim.Services.Connectors.Simulation
342 return false; 366 return false;
343 } 367 }
344 368
369<<<<<<< HEAD
370
371 featuresAvailable.Clear();
372
373 if (result.ContainsKey("features"))
374 {
375 OSDArray array = (OSDArray)result["features"];
376
377 foreach (OSD o in array)
378 featuresAvailable.Add(new UUID(o.AsString()));
379 }
380=======
345 OSDMap resp = (OSDMap)result["_Result"]; 381 OSDMap resp = (OSDMap)result["_Result"];
346 success = resp["success"].AsBoolean(); 382 success = resp["success"].AsBoolean();
347 reason = resp["reason"].AsString(); 383 reason = resp["reason"].AsString();
384>>>>>>> avn/ubitvar
348 385
349 return success; 386 return success;
350 } 387 }
@@ -364,7 +401,7 @@ namespace OpenSim.Services.Connectors.Simulation
364 401
365 try 402 try
366 { 403 {
367 WebUtil.ServiceOSDRequest(uri, null, "DELETE", 10000, false); 404 WebUtil.ServiceOSDRequest(uri, null, "DELETE", 10000, false, false);
368 } 405 }
369 catch (Exception e) 406 catch (Exception e)
370 { 407 {
@@ -383,7 +420,7 @@ namespace OpenSim.Services.Connectors.Simulation
383 420
384 try 421 try
385 { 422 {
386 WebUtil.ServiceOSDRequest(uri, null, "DELETE", 10000, false); 423 WebUtil.ServiceOSDRequest(uri, null, "DELETE", 10000, false, false);
387 } 424 }
388 catch (Exception e) 425 catch (Exception e)
389 { 426 {
@@ -430,8 +467,17 @@ namespace OpenSim.Services.Connectors.Simulation
430 args["destination_name"] = OSD.FromString(destination.RegionName); 467 args["destination_name"] = OSD.FromString(destination.RegionName);
431 args["destination_uuid"] = OSD.FromString(destination.RegionID.ToString()); 468 args["destination_uuid"] = OSD.FromString(destination.RegionID.ToString());
432 469
470<<<<<<< HEAD
471 OSDMap result = WebUtil.PostToService(uri, args, 40000, false);
472
473 if (result == null)
474 return false;
475 bool success = result["success"].AsBoolean();
476 if (!success)
477=======
433 OSDMap response = WebUtil.PostToService(uri, args, 40000); 478 OSDMap response = WebUtil.PostToService(uri, args, 40000);
434 if (response["Success"] == "False") 479 if (response["Success"] == "False")
480>>>>>>> avn/ubitvar
435 return false; 481 return false;
436 } 482 }
437 catch (Exception e) 483 catch (Exception e)