<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Please send a warning when you stop doing that in the core, because the
hypergrid extension I'm doing is heavily influenced by this SL encoding
hack. I don't need the hack for the hypergrid to work; in fact that
encoding for region handles is the ultimate manifestation of the
centralized architecture that the hypergrid is departing from. But in
practice, when the region handles don't encode the grid position
anymore, I'll need to change my code so that I can play the grid game
with the viewer.<br>
<br>
<br>
Stefan Andersson wrote:
<blockquote cite="mid:BLU134-W40C3C218299606AD6A3A18D5270@phx.gbl"
 type="cite">
  <style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
  </style>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 moz-do-not-send="true"
 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: <a class="moz-txt-link-abbreviated" href="mailto:mmazur@gmail.com">mmazur@gmail.com</a><br>
> To: <a class="moz-txt-link-abbreviated" href="mailto:opensim-dev@lists.berlios.de">opensim-dev@lists.berlios.de</a><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>
> <a class="moz-txt-link-abbreviated" href="mailto:Opensim-dev@lists.berlios.de">Opensim-dev@lists.berlios.de</a><br>
> <a class="moz-txt-link-freetext" href="https://lists.berlios.de/mailman/listinfo/opensim-dev">https://lists.berlios.de/mailman/listinfo/opensim-dev</a><br>
  <br>
  <pre wrap="">
<hr size="4" width="90%">
_______________________________________________
Opensim-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Opensim-dev@lists.berlios.de">Opensim-dev@lists.berlios.de</a>
<a class="moz-txt-link-freetext" href="https://lists.berlios.de/mailman/listinfo/opensim-dev">https://lists.berlios.de/mailman/listinfo/opensim-dev</a>
  </pre>
</blockquote>
<br>
</body>
</html>