aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs')
-rw-r--r--OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs74
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)