diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Services/Connectors/Hypergrid/GatekeeperServiceConnector.cs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/OpenSim/Services/Connectors/Hypergrid/GatekeeperServiceConnector.cs b/OpenSim/Services/Connectors/Hypergrid/GatekeeperServiceConnector.cs index c426bba..291dd73 100644 --- a/OpenSim/Services/Connectors/Hypergrid/GatekeeperServiceConnector.cs +++ b/OpenSim/Services/Connectors/Hypergrid/GatekeeperServiceConnector.cs | |||
@@ -38,6 +38,7 @@ using GridRegion = OpenSim.Services.Interfaces.GridRegion; | |||
38 | 38 | ||
39 | using OpenMetaverse; | 39 | using OpenMetaverse; |
40 | using OpenMetaverse.Imaging; | 40 | using OpenMetaverse.Imaging; |
41 | using OpenMetaverse.StructuredData; | ||
41 | using Nwc.XmlRpc; | 42 | using Nwc.XmlRpc; |
42 | using log4net; | 43 | using log4net; |
43 | 44 | ||
@@ -268,5 +269,48 @@ namespace OpenSim.Services.Connectors.Hypergrid | |||
268 | return null; | 269 | return null; |
269 | } | 270 | } |
270 | 271 | ||
272 | public bool CreateAgent(GridRegion destination, AgentCircuitData aCircuit, uint flags, out string myipaddress, out string reason) | ||
273 | { | ||
274 | HttpWebRequest AgentCreateRequest = null; | ||
275 | myipaddress = String.Empty; | ||
276 | reason = String.Empty; | ||
277 | |||
278 | if (SendRequest(destination, aCircuit, flags, out reason, out AgentCreateRequest)) | ||
279 | { | ||
280 | string response = GetResponse(AgentCreateRequest, out reason); | ||
281 | bool success = true; | ||
282 | UnpackResponse(response, out success, out reason, out myipaddress); | ||
283 | return success; | ||
284 | } | ||
285 | |||
286 | return false; | ||
287 | } | ||
288 | |||
289 | protected void UnpackResponse(string response, out bool result, out string reason, out string ipaddress) | ||
290 | { | ||
291 | result = true; | ||
292 | reason = string.Empty; | ||
293 | ipaddress = string.Empty; | ||
294 | |||
295 | if (!String.IsNullOrEmpty(response)) | ||
296 | { | ||
297 | try | ||
298 | { | ||
299 | // we assume we got an OSDMap back | ||
300 | OSDMap r = Util.GetOSDMap(response); | ||
301 | result = r["success"].AsBoolean(); | ||
302 | reason = r["reason"].AsString(); | ||
303 | ipaddress = r["your_ip"].AsString(); | ||
304 | } | ||
305 | catch (NullReferenceException e) | ||
306 | { | ||
307 | m_log.InfoFormat("[GATEKEEPER SERVICE CONNECTOR]: exception on UnpackResponse of DoCreateChildAgentCall {0}", e.Message); | ||
308 | reason = "Internal error"; | ||
309 | result = false; | ||
310 | } | ||
311 | } | ||
312 | } | ||
313 | |||
314 | |||
271 | } | 315 | } |
272 | } | 316 | } |