aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Services/GridService
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Services/GridService')
-rw-r--r--OpenSim/Services/GridService/GridService.cs65
1 files changed, 11 insertions, 54 deletions
diff --git a/OpenSim/Services/GridService/GridService.cs b/OpenSim/Services/GridService/GridService.cs
index 6aa1c4f..2229421 100644
--- a/OpenSim/Services/GridService/GridService.cs
+++ b/OpenSim/Services/GridService/GridService.cs
@@ -88,13 +88,18 @@ namespace OpenSim.Services.GridService
88 return m_Database.Delete(regionID); 88 return m_Database.Delete(regionID);
89 } 89 }
90 90
91 public List<SimpleRegionInfo> GetNeighbours(UUID scopeID, int x, int y) 91 public List<SimpleRegionInfo> GetNeighbours(UUID scopeID, UUID regionID)
92 { 92 {
93 List<RegionData> rdatas = m_Database.Get(x - 1, y - 1, x + 1, y + 1, scopeID);
94 List<SimpleRegionInfo> rinfos = new List<SimpleRegionInfo>(); 93 List<SimpleRegionInfo> rinfos = new List<SimpleRegionInfo>();
95 foreach (RegionData rdata in rdatas) 94 RegionData region = m_Database.Get(regionID, scopeID);
96 rinfos.Add(RegionData2RegionInfo(rdata)); 95 if (region != null)
96 {
97 // Not really? Maybe?
98 List<RegionData> rdatas = m_Database.Get(region.posX - 1, region.posY - 1, region.posX + 1, region.posY + 1, scopeID);
99 foreach (RegionData rdata in rdatas)
100 rinfos.Add(RegionData2RegionInfo(rdata));
97 101
102 }
98 return rinfos; 103 return rinfos;
99 } 104 }
100 105
@@ -164,68 +169,20 @@ namespace OpenSim.Services.GridService
164 rdata.posX = (int)rinfo.RegionLocX; 169 rdata.posX = (int)rinfo.RegionLocX;
165 rdata.posY = (int)rinfo.RegionLocY; 170 rdata.posY = (int)rinfo.RegionLocY;
166 rdata.RegionID = rinfo.RegionID; 171 rdata.RegionID = rinfo.RegionID;
172 rdata.Data = rinfo.ToKeyValuePairs();
167 //rdata.RegionName = rinfo.RegionName; 173 //rdata.RegionName = rinfo.RegionName;
168 rdata.Data["external_ip_address"] = rinfo.ExternalEndPoint.Address.ToString();
169 rdata.Data["external_port"] = rinfo.ExternalEndPoint.Port.ToString();
170 rdata.Data["external_host_name"] = rinfo.ExternalHostName;
171 rdata.Data["http_port"] = rinfo.HttpPort.ToString();
172 rdata.Data["internal_ip_address"] = rinfo.InternalEndPoint.Address.ToString();
173 rdata.Data["internal_port"] = rinfo.InternalEndPoint.Port.ToString();
174 rdata.Data["alternate_ports"] = rinfo.m_allow_alternate_ports.ToString();
175 rdata.Data["server_uri"] = rinfo.ServerURI;
176 174
177 return rdata; 175 return rdata;
178 } 176 }
179 177
180 protected SimpleRegionInfo RegionData2RegionInfo(RegionData rdata) 178 protected SimpleRegionInfo RegionData2RegionInfo(RegionData rdata)
181 { 179 {
182 SimpleRegionInfo rinfo = new SimpleRegionInfo(); 180 SimpleRegionInfo rinfo = new SimpleRegionInfo(rdata.Data);
183 rinfo.RegionLocX = (uint)rdata.posX; 181 rinfo.RegionLocX = (uint)rdata.posX;
184 rinfo.RegionLocY = (uint)rdata.posY; 182 rinfo.RegionLocY = (uint)rdata.posY;
185 rinfo.RegionID = rdata.RegionID; 183 rinfo.RegionID = rdata.RegionID;
186 //rinfo.RegionName = rdata.RegionName; 184 //rinfo.RegionName = rdata.RegionName;
187 185
188 // Now for the variable data
189 if ((rdata.Data["external_ip_address"] != null) && (rdata.Data["external_port"] != null))
190 {
191 int port = 0;
192 Int32.TryParse((string)rdata.Data["external_port"], out port);
193 IPEndPoint ep = new IPEndPoint(IPAddress.Parse((string)rdata.Data["external_ip_address"]), port);
194 rinfo.ExternalEndPoint = ep;
195 }
196 else
197 rinfo.ExternalEndPoint = new IPEndPoint(new IPAddress(0), 0);
198
199 if (rdata.Data["external_host_name"] != null)
200 rinfo.ExternalHostName = (string)rdata.Data["external_host_name"] ;
201
202 if (rdata.Data["http_port"] != null)
203 {
204 UInt32 port = 0;
205 UInt32.TryParse((string)rdata.Data["http_port"], out port);
206 rinfo.HttpPort = port;
207 }
208
209 if ((rdata.Data["internal_ip_address"] != null) && (rdata.Data["internal_port"] != null))
210 {
211 int port = 0;
212 Int32.TryParse((string)rdata.Data["internal_port"], out port);
213 IPEndPoint ep = new IPEndPoint(IPAddress.Parse((string)rdata.Data["internal_ip_address"]), port);
214 rinfo.InternalEndPoint = ep;
215 }
216 else
217 rinfo.InternalEndPoint = new IPEndPoint(new IPAddress(0), 0);
218
219 if (rdata.Data["alternate_ports"] != null)
220 {
221 bool alts = false;
222 Boolean.TryParse((string)rdata.Data["alternate_ports"], out alts);
223 rinfo.m_allow_alternate_ports = alts;
224 }
225
226 if (rdata.Data["server_uri"] != null)
227 rinfo.ServerURI = (string)rdata.Data["server_uri"];
228
229 return rinfo; 186 return rinfo;
230 } 187 }
231 188