diff options
Diffstat (limited to 'OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs')
-rw-r--r-- | OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs | 74 |
1 files changed, 60 insertions, 14 deletions
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) |