diff options
Diffstat (limited to 'OpenSim')
14 files changed, 166 insertions, 5 deletions
diff --git a/OpenSim/Data/IRegionData.cs b/OpenSim/Data/IRegionData.cs index 70e1065..463c621 100644 --- a/OpenSim/Data/IRegionData.cs +++ b/OpenSim/Data/IRegionData.cs | |||
@@ -81,6 +81,7 @@ namespace OpenSim.Data | |||
81 | bool Delete(UUID regionID); | 81 | bool Delete(UUID regionID); |
82 | 82 | ||
83 | List<RegionData> GetDefaultRegions(UUID scopeID); | 83 | List<RegionData> GetDefaultRegions(UUID scopeID); |
84 | List<RegionData> GetDefaultHypergridRegions(UUID scopeID); | ||
84 | List<RegionData> GetFallbackRegions(UUID scopeID, int x, int y); | 85 | List<RegionData> GetFallbackRegions(UUID scopeID, int x, int y); |
85 | List<RegionData> GetHyperlinks(UUID scopeID); | 86 | List<RegionData> GetHyperlinks(UUID scopeID); |
86 | } | 87 | } |
diff --git a/OpenSim/Data/MSSQL/MSSQLRegionData.cs b/OpenSim/Data/MSSQL/MSSQLRegionData.cs index 0d89706..c0589df 100644 --- a/OpenSim/Data/MSSQL/MSSQLRegionData.cs +++ b/OpenSim/Data/MSSQL/MSSQLRegionData.cs | |||
@@ -315,6 +315,11 @@ namespace OpenSim.Data.MSSQL | |||
315 | return Get((int)RegionFlags.DefaultRegion, scopeID); | 315 | return Get((int)RegionFlags.DefaultRegion, scopeID); |
316 | } | 316 | } |
317 | 317 | ||
318 | public List<RegionData> GetDefaultHypergridRegions(UUID scopeID) | ||
319 | { | ||
320 | return Get((int)RegionFlags.DefaultHGRegion, scopeID); | ||
321 | } | ||
322 | |||
318 | public List<RegionData> GetFallbackRegions(UUID scopeID, int x, int y) | 323 | public List<RegionData> GetFallbackRegions(UUID scopeID, int x, int y) |
319 | { | 324 | { |
320 | List<RegionData> regions = Get((int)RegionFlags.FallbackRegion, scopeID); | 325 | List<RegionData> regions = Get((int)RegionFlags.FallbackRegion, scopeID); |
diff --git a/OpenSim/Data/MySQL/MySQLRegionData.cs b/OpenSim/Data/MySQL/MySQLRegionData.cs index a2d4ae4..2ad7590 100644 --- a/OpenSim/Data/MySQL/MySQLRegionData.cs +++ b/OpenSim/Data/MySQL/MySQLRegionData.cs | |||
@@ -310,6 +310,11 @@ namespace OpenSim.Data.MySQL | |||
310 | return Get((int)RegionFlags.DefaultRegion, scopeID); | 310 | return Get((int)RegionFlags.DefaultRegion, scopeID); |
311 | } | 311 | } |
312 | 312 | ||
313 | public List<RegionData> GetDefaultHypergridRegions(UUID scopeID) | ||
314 | { | ||
315 | return Get((int)RegionFlags.DefaultHGRegion, scopeID); | ||
316 | } | ||
317 | |||
313 | public List<RegionData> GetFallbackRegions(UUID scopeID, int x, int y) | 318 | public List<RegionData> GetFallbackRegions(UUID scopeID, int x, int y) |
314 | { | 319 | { |
315 | List<RegionData> regions = Get((int)RegionFlags.FallbackRegion, scopeID); | 320 | List<RegionData> regions = Get((int)RegionFlags.FallbackRegion, scopeID); |
diff --git a/OpenSim/Data/Null/NullRegionData.cs b/OpenSim/Data/Null/NullRegionData.cs index f707d98..d28cd99 100644 --- a/OpenSim/Data/Null/NullRegionData.cs +++ b/OpenSim/Data/Null/NullRegionData.cs | |||
@@ -239,6 +239,11 @@ namespace OpenSim.Data.Null | |||
239 | return Get((int)RegionFlags.DefaultRegion, scopeID); | 239 | return Get((int)RegionFlags.DefaultRegion, scopeID); |
240 | } | 240 | } |
241 | 241 | ||
242 | public List<RegionData> GetDefaultHypergridRegions(UUID scopeID) | ||
243 | { | ||
244 | return Get((int)RegionFlags.DefaultHGRegion, scopeID); | ||
245 | } | ||
246 | |||
242 | public List<RegionData> GetFallbackRegions(UUID scopeID, int x, int y) | 247 | public List<RegionData> GetFallbackRegions(UUID scopeID, int x, int y) |
243 | { | 248 | { |
244 | List<RegionData> regions = Get((int)RegionFlags.FallbackRegion, scopeID); | 249 | List<RegionData> regions = Get((int)RegionFlags.FallbackRegion, scopeID); |
diff --git a/OpenSim/Framework/RegionFlags.cs b/OpenSim/Framework/RegionFlags.cs index a3089b0..7c6569e 100644 --- a/OpenSim/Framework/RegionFlags.cs +++ b/OpenSim/Framework/RegionFlags.cs | |||
@@ -48,6 +48,7 @@ namespace OpenSim.Framework | |||
48 | NoMove = 64, // Don't allow moving this region | 48 | NoMove = 64, // Don't allow moving this region |
49 | Reservation = 128, // This is an inactive reservation | 49 | Reservation = 128, // This is an inactive reservation |
50 | Authenticate = 256, // Require authentication | 50 | Authenticate = 256, // Require authentication |
51 | Hyperlink = 512 // Record represents a HG link | 51 | Hyperlink = 512, // Record represents a HG link |
52 | DefaultHGRegion = 1024 // Record represents a default region for hypergrid teleports only. | ||
52 | } | 53 | } |
53 | } \ No newline at end of file | 54 | } \ No newline at end of file |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs index 3849a3f..31ef79b 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs | |||
@@ -235,6 +235,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid | |||
235 | return m_GridService.GetDefaultRegions(scopeID); | 235 | return m_GridService.GetDefaultRegions(scopeID); |
236 | } | 236 | } |
237 | 237 | ||
238 | public List<GridRegion> GetDefaultHypergridRegions(UUID scopeID) | ||
239 | { | ||
240 | return m_GridService.GetDefaultHypergridRegions(scopeID); | ||
241 | } | ||
242 | |||
238 | public List<GridRegion> GetFallbackRegions(UUID scopeID, int x, int y) | 243 | public List<GridRegion> GetFallbackRegions(UUID scopeID, int x, int y) |
239 | { | 244 | { |
240 | return m_GridService.GetFallbackRegions(scopeID, x, y); | 245 | return m_GridService.GetFallbackRegions(scopeID, x, y); |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs index b2646ba..6a57d1f 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs | |||
@@ -277,6 +277,26 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid | |||
277 | return rinfo; | 277 | return rinfo; |
278 | } | 278 | } |
279 | 279 | ||
280 | public List<GridRegion> GetDefaultHypergridRegions(UUID scopeID) | ||
281 | { | ||
282 | List<GridRegion> rinfo = m_LocalGridService.GetDefaultHypergridRegions(scopeID); | ||
283 | //m_log.DebugFormat("[REMOTE GRID CONNECTOR]: Local GetDefaultHypergridRegions {0} found {1} regions", name, rinfo.Count); | ||
284 | List<GridRegion> grinfo = m_RemoteGridService.GetDefaultHypergridRegions(scopeID); | ||
285 | |||
286 | if (grinfo != null) | ||
287 | { | ||
288 | //m_log.DebugFormat("[REMOTE GRID CONNECTOR]: Remote GetDefaultHypergridRegions {0} found {1} regions", name, grinfo.Count); | ||
289 | foreach (GridRegion r in grinfo) | ||
290 | { | ||
291 | m_RegionInfoCache.Cache(r); | ||
292 | if (rinfo.Find(delegate(GridRegion gr) { return gr.RegionID == r.RegionID; }) == null) | ||
293 | rinfo.Add(r); | ||
294 | } | ||
295 | } | ||
296 | |||
297 | return rinfo; | ||
298 | } | ||
299 | |||
280 | public List<GridRegion> GetFallbackRegions(UUID scopeID, int x, int y) | 300 | public List<GridRegion> GetFallbackRegions(UUID scopeID, int x, int y) |
281 | { | 301 | { |
282 | List<GridRegion> rinfo = m_LocalGridService.GetFallbackRegions(scopeID, x, y); | 302 | List<GridRegion> rinfo = m_LocalGridService.GetFallbackRegions(scopeID, x, y); |
diff --git a/OpenSim/Server/Handlers/Grid/GridServerPostHandler.cs b/OpenSim/Server/Handlers/Grid/GridServerPostHandler.cs index 89cba8a..c63b409 100644 --- a/OpenSim/Server/Handlers/Grid/GridServerPostHandler.cs +++ b/OpenSim/Server/Handlers/Grid/GridServerPostHandler.cs | |||
@@ -106,6 +106,9 @@ namespace OpenSim.Server.Handlers.Grid | |||
106 | case "get_default_regions": | 106 | case "get_default_regions": |
107 | return GetDefaultRegions(request); | 107 | return GetDefaultRegions(request); |
108 | 108 | ||
109 | case "get_default_hypergrid_regions": | ||
110 | return GetDefaultHypergridRegions(request); | ||
111 | |||
109 | case "get_fallback_regions": | 112 | case "get_fallback_regions": |
110 | return GetFallbackRegions(request); | 113 | return GetFallbackRegions(request); |
111 | 114 | ||
@@ -444,6 +447,36 @@ namespace OpenSim.Server.Handlers.Grid | |||
444 | return Util.UTF8NoBomEncoding.GetBytes(xmlString); | 447 | return Util.UTF8NoBomEncoding.GetBytes(xmlString); |
445 | } | 448 | } |
446 | 449 | ||
450 | byte[] GetDefaultHypergridRegions(Dictionary<string, object> request) | ||
451 | { | ||
452 | //m_log.DebugFormat("[GRID HANDLER]: GetDefaultRegions"); | ||
453 | UUID scopeID = UUID.Zero; | ||
454 | if (request.ContainsKey("SCOPEID")) | ||
455 | UUID.TryParse(request["SCOPEID"].ToString(), out scopeID); | ||
456 | else | ||
457 | m_log.WarnFormat("[GRID HANDLER]: no scopeID in request to get region range"); | ||
458 | |||
459 | List<GridRegion> rinfos = m_GridService.GetDefaultHypergridRegions(scopeID); | ||
460 | |||
461 | Dictionary<string, object> result = new Dictionary<string, object>(); | ||
462 | if ((rinfos == null) || ((rinfos != null) && (rinfos.Count == 0))) | ||
463 | result["result"] = "null"; | ||
464 | else | ||
465 | { | ||
466 | int i = 0; | ||
467 | foreach (GridRegion rinfo in rinfos) | ||
468 | { | ||
469 | Dictionary<string, object> rinfoDict = rinfo.ToKeyValuePairs(); | ||
470 | result["region" + i] = rinfoDict; | ||
471 | i++; | ||
472 | } | ||
473 | } | ||
474 | string xmlString = ServerUtils.BuildXmlResponse(result); | ||
475 | |||
476 | //m_log.DebugFormat("[GRID HANDLER]: resp string: {0}", xmlString); | ||
477 | return Util.UTF8NoBomEncoding.GetBytes(xmlString); | ||
478 | } | ||
479 | |||
447 | byte[] GetFallbackRegions(Dictionary<string, object> request) | 480 | byte[] GetFallbackRegions(Dictionary<string, object> request) |
448 | { | 481 | { |
449 | //m_log.DebugFormat("[GRID HANDLER]: GetRegionRange"); | 482 | //m_log.DebugFormat("[GRID HANDLER]: GetRegionRange"); |
diff --git a/OpenSim/Services/Connectors/Grid/GridServicesConnector.cs b/OpenSim/Services/Connectors/Grid/GridServicesConnector.cs index 34ed0d7..0f5a613 100644 --- a/OpenSim/Services/Connectors/Grid/GridServicesConnector.cs +++ b/OpenSim/Services/Connectors/Grid/GridServicesConnector.cs | |||
@@ -515,6 +515,57 @@ namespace OpenSim.Services.Connectors | |||
515 | return rinfos; | 515 | return rinfos; |
516 | } | 516 | } |
517 | 517 | ||
518 | public List<GridRegion> GetDefaultHypergridRegions(UUID scopeID) | ||
519 | { | ||
520 | Dictionary<string, object> sendData = new Dictionary<string, object>(); | ||
521 | |||
522 | sendData["SCOPEID"] = scopeID.ToString(); | ||
523 | |||
524 | sendData["METHOD"] = "get_default_hypergrid_regions"; | ||
525 | |||
526 | List<GridRegion> rinfos = new List<GridRegion>(); | ||
527 | string reply = string.Empty; | ||
528 | string uri = m_ServerURI + "/grid"; | ||
529 | try | ||
530 | { | ||
531 | reply = SynchronousRestFormsRequester.MakeRequest("POST", | ||
532 | uri, | ||
533 | ServerUtils.BuildQueryString(sendData)); | ||
534 | |||
535 | //m_log.DebugFormat("[GRID CONNECTOR]: reply was {0}", reply); | ||
536 | } | ||
537 | catch (Exception e) | ||
538 | { | ||
539 | m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server at {0}: {1}", uri, e.Message); | ||
540 | return rinfos; | ||
541 | } | ||
542 | |||
543 | if (reply != string.Empty) | ||
544 | { | ||
545 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); | ||
546 | |||
547 | if (replyData != null) | ||
548 | { | ||
549 | Dictionary<string, object>.ValueCollection rinfosList = replyData.Values; | ||
550 | foreach (object r in rinfosList) | ||
551 | { | ||
552 | if (r is Dictionary<string, object>) | ||
553 | { | ||
554 | GridRegion rinfo = new GridRegion((Dictionary<string, object>)r); | ||
555 | rinfos.Add(rinfo); | ||
556 | } | ||
557 | } | ||
558 | } | ||
559 | else | ||
560 | m_log.DebugFormat("[GRID CONNECTOR]: GetDefaultHypergridRegions {0} received null response", | ||
561 | scopeID); | ||
562 | } | ||
563 | else | ||
564 | m_log.DebugFormat("[GRID CONNECTOR]: GetDefaultHypergridRegions received null reply"); | ||
565 | |||
566 | return rinfos; | ||
567 | } | ||
568 | |||
518 | public List<GridRegion> GetFallbackRegions(UUID scopeID, int x, int y) | 569 | public List<GridRegion> GetFallbackRegions(UUID scopeID, int x, int y) |
519 | { | 570 | { |
520 | Dictionary<string, object> sendData = new Dictionary<string, object>(); | 571 | Dictionary<string, object> sendData = new Dictionary<string, object>(); |
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs index bcc1e4a..816591b 100644 --- a/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs +++ b/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs | |||
@@ -330,6 +330,12 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
330 | return new List<GridRegion>(0); | 330 | return new List<GridRegion>(0); |
331 | } | 331 | } |
332 | 332 | ||
333 | public List<GridRegion> GetDefaultHypergridRegions(UUID scopeID) | ||
334 | { | ||
335 | // TODO: Allow specifying the default grid location | ||
336 | return GetDefaultRegions(scopeID); | ||
337 | } | ||
338 | |||
333 | public List<GridRegion> GetFallbackRegions(UUID scopeID, int x, int y) | 339 | public List<GridRegion> GetFallbackRegions(UUID scopeID, int x, int y) |
334 | { | 340 | { |
335 | GridRegion defRegion = GetNearestRegion(new Vector3d(x, y, 0.0), true); | 341 | GridRegion defRegion = GetNearestRegion(new Vector3d(x, y, 0.0), true); |
diff --git a/OpenSim/Services/GridService/GridService.cs b/OpenSim/Services/GridService/GridService.cs index a1485c8..e72b7f9 100644 --- a/OpenSim/Services/GridService/GridService.cs +++ b/OpenSim/Services/GridService/GridService.cs | |||
@@ -265,8 +265,9 @@ namespace OpenSim.Services.GridService | |||
265 | m_log.DebugFormat("[GRID SERVICE]: Database exception: {0}", e); | 265 | m_log.DebugFormat("[GRID SERVICE]: Database exception: {0}", e); |
266 | } | 266 | } |
267 | 267 | ||
268 | m_log.DebugFormat("[GRID SERVICE]: Region {0} ({1}) registered successfully at {2}-{3}", | 268 | m_log.DebugFormat("[GRID SERVICE]: Region {0} ({1}) registered successfully at {2}-{3} with flags {4}", |
269 | regionInfos.RegionName, regionInfos.RegionID, regionInfos.RegionCoordX, regionInfos.RegionCoordY); | 269 | regionInfos.RegionName, regionInfos.RegionID, regionInfos.RegionCoordX, regionInfos.RegionCoordY, |
270 | (OpenSim.Framework.RegionFlags)flags); | ||
270 | 271 | ||
271 | return String.Empty; | 272 | return String.Empty; |
272 | } | 273 | } |
@@ -478,6 +479,33 @@ namespace OpenSim.Services.GridService | |||
478 | return ret; | 479 | return ret; |
479 | } | 480 | } |
480 | 481 | ||
482 | public List<GridRegion> GetDefaultHypergridRegions(UUID scopeID) | ||
483 | { | ||
484 | List<GridRegion> ret = new List<GridRegion>(); | ||
485 | |||
486 | List<RegionData> regions = m_Database.GetDefaultHypergridRegions(scopeID); | ||
487 | |||
488 | foreach (RegionData r in regions) | ||
489 | { | ||
490 | if ((Convert.ToInt32(r.Data["flags"]) & (int)OpenSim.Framework.RegionFlags.RegionOnline) != 0) | ||
491 | ret.Add(RegionData2RegionInfo(r)); | ||
492 | } | ||
493 | |||
494 | int hgDefaultRegionsFoundOnline = regions.Count; | ||
495 | |||
496 | // For now, hypergrid default regions will always be given precedence but we will also return simple default | ||
497 | // regions in case no specific hypergrid regions are specified. | ||
498 | ret.AddRange(GetDefaultRegions(scopeID)); | ||
499 | |||
500 | int normalDefaultRegionsFoundOnline = ret.Count - hgDefaultRegionsFoundOnline; | ||
501 | |||
502 | m_log.DebugFormat( | ||
503 | "[GRID SERVICE]: GetDefaultHypergridRegions returning {0} hypergrid default and {1} normal default regions", | ||
504 | hgDefaultRegionsFoundOnline, normalDefaultRegionsFoundOnline); | ||
505 | |||
506 | return ret; | ||
507 | } | ||
508 | |||
481 | public List<GridRegion> GetFallbackRegions(UUID scopeID, int x, int y) | 509 | public List<GridRegion> GetFallbackRegions(UUID scopeID, int x, int y) |
482 | { | 510 | { |
483 | List<GridRegion> ret = new List<GridRegion>(); | 511 | List<GridRegion> ret = new List<GridRegion>(); |
diff --git a/OpenSim/Services/GridService/HypergridLinker.cs b/OpenSim/Services/GridService/HypergridLinker.cs index 8335724..4024295 100644 --- a/OpenSim/Services/GridService/HypergridLinker.cs +++ b/OpenSim/Services/GridService/HypergridLinker.cs | |||
@@ -79,7 +79,7 @@ namespace OpenSim.Services.GridService | |||
79 | { | 79 | { |
80 | if (m_DefaultRegion == null) | 80 | if (m_DefaultRegion == null) |
81 | { | 81 | { |
82 | List<GridRegion> defs = m_GridService.GetDefaultRegions(m_ScopeID); | 82 | List<GridRegion> defs = m_GridService.GetDefaultHypergridRegions(m_ScopeID); |
83 | if (defs != null && defs.Count > 0) | 83 | if (defs != null && defs.Count > 0) |
84 | m_DefaultRegion = defs[0]; | 84 | m_DefaultRegion = defs[0]; |
85 | else | 85 | else |
diff --git a/OpenSim/Services/HypergridService/GatekeeperService.cs b/OpenSim/Services/HypergridService/GatekeeperService.cs index e10c4cb..f6136b5 100644 --- a/OpenSim/Services/HypergridService/GatekeeperService.cs +++ b/OpenSim/Services/HypergridService/GatekeeperService.cs | |||
@@ -171,7 +171,7 @@ namespace OpenSim.Services.HypergridService | |||
171 | m_log.DebugFormat("[GATEKEEPER SERVICE]: Request to link to {0}", (regionName == string.Empty)? "default region" : regionName); | 171 | m_log.DebugFormat("[GATEKEEPER SERVICE]: Request to link to {0}", (regionName == string.Empty)? "default region" : regionName); |
172 | if (!m_AllowTeleportsToAnyRegion || regionName == string.Empty) | 172 | if (!m_AllowTeleportsToAnyRegion || regionName == string.Empty) |
173 | { | 173 | { |
174 | List<GridRegion> defs = m_GridService.GetDefaultRegions(m_ScopeID); | 174 | List<GridRegion> defs = m_GridService.GetDefaultHypergridRegions(m_ScopeID); |
175 | if (defs != null && defs.Count > 0) | 175 | if (defs != null && defs.Count > 0) |
176 | { | 176 | { |
177 | region = defs[0]; | 177 | region = defs[0]; |
diff --git a/OpenSim/Services/Interfaces/IGridService.cs b/OpenSim/Services/Interfaces/IGridService.cs index 6ed681f..88ac5b3 100644 --- a/OpenSim/Services/Interfaces/IGridService.cs +++ b/OpenSim/Services/Interfaces/IGridService.cs | |||
@@ -97,6 +97,7 @@ namespace OpenSim.Services.Interfaces | |||
97 | List<GridRegion> GetRegionRange(UUID scopeID, int xmin, int xmax, int ymin, int ymax); | 97 | List<GridRegion> GetRegionRange(UUID scopeID, int xmin, int xmax, int ymin, int ymax); |
98 | 98 | ||
99 | List<GridRegion> GetDefaultRegions(UUID scopeID); | 99 | List<GridRegion> GetDefaultRegions(UUID scopeID); |
100 | List<GridRegion> GetDefaultHypergridRegions(UUID scopeID); | ||
100 | List<GridRegion> GetFallbackRegions(UUID scopeID, int x, int y); | 101 | List<GridRegion> GetFallbackRegions(UUID scopeID, int x, int y); |
101 | List<GridRegion> GetHyperlinks(UUID scopeID); | 102 | List<GridRegion> GetHyperlinks(UUID scopeID); |
102 | 103 | ||