From 8edab95bad417a4d82cdfb6e9ef3138e8c5f0ab1 Mon Sep 17 00:00:00 2001 From: lbsa71 Date: Tue, 29 Jul 2008 19:52:58 +0000 Subject: * Refactored some heavily duplicated RequestSimProfileData functions * Changed InventoryUrl and GridServerURL type to Uri instead of string - to address '/' issues. --- OpenSim/Data/RegionProfileData.cs | 127 ++++++++++++-------------------------- 1 file changed, 40 insertions(+), 87 deletions(-) (limited to 'OpenSim/Data') diff --git a/OpenSim/Data/RegionProfileData.cs b/OpenSim/Data/RegionProfileData.cs index 12f3927..f6172b9 100644 --- a/OpenSim/Data/RegionProfileData.cs +++ b/OpenSim/Data/RegionProfileData.cs @@ -130,51 +130,60 @@ namespace OpenSim.Data /// public LLUUID originUUID; - /// - /// Request sim profile information from a grid server, by Region UUID + /// Request sim data based on arbitrary key/value /// - /// The region UUID to look for - /// - /// - /// - /// The sim profile. Null if there was a request failure - /// This method should be statics - public RegionProfileData RequestSimProfileData(LLUUID region_uuid, string gridserver_url, - string gridserver_sendkey, string gridserver_recvkey) + private static RegionProfileData RequestSimData(Uri gridserver_url, string gridserver_sendkey, string keyField, string keyValue) { Hashtable requestData = new Hashtable(); - requestData["region_uuid"] = region_uuid.UUID.ToString(); + requestData[keyField] = keyValue; requestData["authkey"] = gridserver_sendkey; ArrayList SendParams = new ArrayList(); SendParams.Add(requestData); XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams); - XmlRpcResponse GridResp = GridReq.Send(gridserver_url, 3000); + XmlRpcResponse GridResp = GridReq.Send(gridserver_url.ToString(), 3000); Hashtable responseData = (Hashtable) GridResp.Value; - if (responseData.ContainsKey("error")) + RegionProfileData simData = null; + + if (!responseData.ContainsKey("error")) { - return null; + simData = new RegionProfileData(); + simData.regionLocX = Convert.ToUInt32((string) responseData["region_locx"]); + simData.regionLocY = Convert.ToUInt32((string) responseData["region_locy"]); + simData.regionHandle = + Helpers.UIntsToLong((simData.regionLocX*Constants.RegionSize), + (simData.regionLocY*Constants.RegionSize)); + simData.serverIP = (string) responseData["sim_ip"]; + simData.serverPort = Convert.ToUInt32((string) responseData["sim_port"]); + simData.httpPort = Convert.ToUInt32((string) responseData["http_port"]); + simData.remotingPort = Convert.ToUInt32((string) responseData["remoting_port"]); + simData.serverURI = (string) responseData["server_uri"]; + simData.httpServerURI = "http://" + simData.serverIP + ":" + simData.httpPort.ToString() + "/"; + simData.UUID = new LLUUID((string) responseData["region_UUID"]); + simData.regionName = (string) responseData["region_name"]; } - RegionProfileData simData = new RegionProfileData(); - simData.regionLocX = Convert.ToUInt32((string) responseData["region_locx"]); - simData.regionLocY = Convert.ToUInt32((string) responseData["region_locy"]); - simData.regionHandle = Helpers.UIntsToLong((simData.regionLocX * Constants.RegionSize), (simData.regionLocY * Constants.RegionSize)); - simData.serverIP = (string) responseData["sim_ip"]; - simData.serverPort = Convert.ToUInt32((string) responseData["sim_port"]); - simData.httpPort = Convert.ToUInt32((string) responseData["http_port"]); - simData.remotingPort = Convert.ToUInt32((string) responseData["remoting_port"]); - simData.serverURI = (string)responseData["server_uri"]; - simData.httpServerURI = "http://" + simData.serverIP + ":" + simData.httpPort.ToString() + "/"; - simData.UUID = new LLUUID((string) responseData["region_UUID"]); - simData.regionName = (string) responseData["region_name"]; - return simData; } /// + /// Request sim profile information from a grid server, by Region UUID + /// + /// The region UUID to look for + /// + /// + /// + /// The sim profile. Null if there was a request failure + /// This method should be statics + public static RegionProfileData RequestSimProfileData(LLUUID region_uuid, Uri gridserver_url, + string gridserver_sendkey, string gridserver_recvkey) + { + return RequestSimData(gridserver_url, gridserver_sendkey, "region_uuid", region_uuid.UUID.ToString()); + } + + /// /// Request sim profile information from a grid server, by Region Handle /// /// the region handle to look for @@ -182,38 +191,10 @@ namespace OpenSim.Data /// /// /// The sim profile. Null if there was a request failure - public static RegionProfileData RequestSimProfileData(ulong region_handle, string gridserver_url, + public static RegionProfileData RequestSimProfileData(ulong region_handle, Uri gridserver_url, string gridserver_sendkey, string gridserver_recvkey) { - Hashtable requestData = new Hashtable(); - requestData["region_handle"] = region_handle.ToString(); - requestData["authkey"] = gridserver_sendkey; - ArrayList SendParams = new ArrayList(); - SendParams.Add(requestData); - XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams); - XmlRpcResponse GridResp = GridReq.Send(gridserver_url, 3000); - - Hashtable responseData = (Hashtable) GridResp.Value; - - if (responseData.ContainsKey("error")) - { - return null; - } - - RegionProfileData simData = new RegionProfileData(); - simData.regionLocX = Convert.ToUInt32((string) responseData["region_locx"]); - simData.regionLocY = Convert.ToUInt32((string) responseData["region_locy"]); - simData.regionHandle = Helpers.UIntsToLong((simData.regionLocX * Constants.RegionSize), (simData.regionLocY * Constants.RegionSize)); - simData.serverIP = (string) responseData["sim_ip"]; - simData.serverPort = Convert.ToUInt32((string) responseData["sim_port"]); - simData.httpPort = Convert.ToUInt32((string) responseData["http_port"]); - simData.remotingPort = Convert.ToUInt32((string) responseData["remoting_port"]); - simData.httpServerURI = "http://" + simData.serverIP + ":" + simData.httpPort.ToString() + "/"; - simData.serverURI = (string)responseData["server_uri"]; - simData.UUID = new LLUUID((string) responseData["region_UUID"]); - simData.regionName = (string) responseData["region_name"]; - - return simData; + return RequestSimData(gridserver_url, gridserver_sendkey, "region_handle", region_handle.ToString()); } /// @@ -224,38 +205,10 @@ namespace OpenSim.Data /// /// /// The sim profile. Null if there was a request failure - public static RegionProfileData RequestSimProfileData(string regionName, string gridserver_url, + public static RegionProfileData RequestSimProfileData(string regionName, Uri gridserver_url, string gridserver_sendkey, string gridserver_recvkey) { - Hashtable requestData = new Hashtable(); - requestData["region_name_search"] = regionName; - requestData["authkey"] = gridserver_sendkey; - ArrayList SendParams = new ArrayList(); - SendParams.Add(requestData); - XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams); - XmlRpcResponse GridResp = GridReq.Send(gridserver_url, 3000); - - Hashtable responseData = (Hashtable)GridResp.Value; - - if (responseData.ContainsKey("error")) - { - return null; - } - - RegionProfileData simData = new RegionProfileData(); - simData.regionLocX = Convert.ToUInt32((string)responseData["region_locx"]); - simData.regionLocY = Convert.ToUInt32((string)responseData["region_locy"]); - simData.regionHandle = Helpers.UIntsToLong((simData.regionLocX * Constants.RegionSize), (simData.regionLocY * Constants.RegionSize)); - simData.serverIP = (string)responseData["sim_ip"]; - simData.serverPort = Convert.ToUInt32((string)responseData["sim_port"]); - simData.httpPort = Convert.ToUInt32((string)responseData["http_port"]); - simData.remotingPort = Convert.ToUInt32((string)responseData["remoting_port"]); - simData.httpServerURI = "http://" + simData.serverIP + ":" + simData.httpPort.ToString() + "/"; - simData.serverURI = (string)responseData["server_uri"]; - simData.UUID = new LLUUID((string)responseData["region_UUID"]); - simData.regionName = (string)responseData["region_name"]; - - return simData; + return RequestSimData(gridserver_url, gridserver_sendkey, "region_name_search", regionName ); } } } -- cgit v1.1