<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>Generally, we've been trying to move away from the region handle being calculated from x/y in core, as that is an heavily sl-centric assumption. It's always a bad idea to code information (like coding x/y into a handle) into handles and identifiers, as I would say this incident is an good example of. (sooner or later, somebody wants to implement something using another handle for the same information)<BR><BR>
Best regards,<BR>Stefan Andersson<BR>Tribal Media AB<BR> <BR>Join the 3d web revolution : <A href="http://tribalnet.se/" target=_blank>http://tribalnet.se/</A><BR> <BR><BR><BR><BR>

<HR id=stopSpelling>
<BR>
> Date: Tue, 28 Oct 2008 16:56:31 +0900<BR>> From: mmazur@gmail.com<BR>> To: opensim-dev@lists.berlios.de<BR>> Subject: [Opensim-dev] Changing GetRegions(uint, uint, uint, uint) in GridManager<BR>> <BR>> Hi,<BR>> <BR>> In OpenSim/Grid/GridServer/GridManager.cs there is a method with the<BR>> following signature:<BR>> <BR>> Dictionary<ulong, RegionProfileData> GetRegions(uint, uint, uint, uint)<BR>> <BR>> This method grabs all the regions currently in the regions table, and<BR>> puts them in a dictionary with the region handle as the key. It's<BR>> invoked in GetSimNeighboursData() and XmlRpcMapBlockMethod().<BR>> <BR>> I would like to modify this method to have the following signature:<BR>> <BR>> List<RegionProfileData> GetRegions(uint, uint, uint, uint)<BR>> <BR>> Note there is another method very similar already in GridManager:<BR>> <BR>> List<RegionProfileData> GetRegions(string, int)<BR>> <BR>> I don't immediately see any place that the region handle is required.<BR>> The dictionary is iterated over, the data from each region extracted<BR>> and passed on.<BR>> <BR>> Why is the region handle required? It's calculated from the region's<BR>> coordinates, so maybe it's used to uniquely identify a region? In that<BR>> case, could the UUID be used instead?<BR>> <BR>> The reason I want to do this is that for our load balancing application<BR>> we have multiple entries in the regions table for the same region;<BR>> different IPs and URIs for the same coordinates and hence same region<BR>> handle. The way the method is currently implemented, only one regions<BR>> table entry for each set of coordinates is returned.<BR>> <BR>> Please find the proposed diff below. Am I introducing any bugs? Is there<BR>> a better way to do this?<BR>> <BR>> If nobody has any issues with this, I'd like to check this in.<BR>> <BR>> Thanks,<BR>> Mike<BR>> <BR>> <BR>> @@ -165,19 +165,15 @@ namespace OpenSim.Grid.GridServer<BR>> return null;<BR>> }<BR>> <BR>> - public Dictionary<ulong, RegionProfileData> GetRegions(uint xmin, uint ymin, uint xmax, uint ymax)<BR>> + public List<RegionProfileData> GetRegions(uint xmin, uint ymin, uint xmax, uint ymax)<BR>> {<BR>> - Dictionary<ulong, RegionProfileData> regions = new Dictionary<ulong, RegionProfileData>();<BR>> + List<RegionProfileData> regions = new List<RegionProfileData>();<BR>> <BR>> foreach (IGridDataPlugin plugin in _plugins)<BR>> {<BR>> try<BR>> {<BR>> - RegionProfileData[] neighbours = plugin.GetProfilesInRange(xmin, ymin, xmax, ymax);<BR>> - foreach (RegionProfileData neighbour in neighbours)<BR>> - {<BR>> - regions[neighbour.regionHandle] = neighbour;<BR>> - }<BR>> + regions.AddRange(plugin.GetProfilesInRange(xmin, ymin, xmax, ymax));<BR>> }<BR>> catch<BR>> {<BR>> _______________________________________________<BR>> Opensim-dev mailing list<BR>> Opensim-dev@lists.berlios.de<BR>> https://lists.berlios.de/mailman/listinfo/opensim-dev<BR><BR></body>
</html>