private GridRegion FindAlternativeRegion(UUID scopeID) { List <GridRegion> hyperlinks = null; List <GridRegion> regions = m_GridService.GetFallbackRegions(scopeID, (int)Util.RegionToWorldLoc(1000), (int)Util.RegionToWorldLoc(1000)); if (regions != null && regions.Count > 0) { hyperlinks = m_GridService.GetHyperlinks(scopeID); IEnumerable <GridRegion> availableRegions = regions.Except(hyperlinks); if (availableRegions.Count() > 0) { return(availableRegions.ElementAt(0)); } } // No fallbacks, try to find an arbitrary region that is not a hyperlink // maxNumber is fixed for now; maybe use some search pattern with increasing maxSize here? regions = m_GridService.GetRegionsByName(scopeID, "", 10); if (regions != null && regions.Count > 0) { if (hyperlinks == null) { hyperlinks = m_GridService.GetHyperlinks(scopeID); } IEnumerable <GridRegion> availableRegions = regions.Except(hyperlinks); if (availableRegions.Count() > 0) { return(availableRegions.ElementAt(0)); } } return(null); }
public List <GridRegion> GetHyperlinks(UUID scopeID) { List <GridRegion> rinfo = m_LocalGridService.GetHyperlinks(scopeID); //m_log.DebugFormat("[REMOTE GRID CONNECTOR]: Local GetHyperlinks {0} found {1} regions", name, rinfo.Count); List <GridRegion> grinfo = m_RemoteGridService.GetHyperlinks(scopeID); if (grinfo != null) { //m_log.DebugFormat("[REMOTE GRID CONNECTOR]: Remote GetHyperlinks {0} found {1} regions", name, grinfo.Count); foreach (GridRegion r in grinfo) { if (rinfo.Find(delegate(GridRegion gr) { return(gr.RegionID == r.RegionID); }) == null) { rinfo.Add(r); } } } return(rinfo); }
byte[] GetHyperlinks(Dictionary <string, object> request) { //m_log.DebugFormat("[GRID HANDLER]: GetHyperlinks"); UUID scopeID = UUID.Zero; if (request.ContainsKey("SCOPEID")) { UUID.TryParse(request["SCOPEID"].ToString(), out scopeID); } else { m_log.WarnFormat("[GRID HANDLER]: no scopeID in request to get linked regions"); } List <GridRegion> rinfos = m_GridService.GetHyperlinks(scopeID); Dictionary <string, object> result = new Dictionary <string, object>(); if ((rinfos == null) || ((rinfos != null) && (rinfos.Count == 0))) { result["result"] = "null"; } else { int i = 0; foreach (GridRegion rinfo in rinfos) { Dictionary <string, object> rinfoDict = rinfo.ToKeyValuePairs(); result["region" + i] = rinfoDict; i++; } } string xmlString = ServerUtils.BuildXmlResponse(result); //m_log.DebugFormat("[GRID HANDLER]: resp string: {0}", xmlString); UTF8Encoding encoding = new UTF8Encoding(); return(encoding.GetBytes(xmlString)); }
public List <GridRegion> GetHyperlinks(UUID scopeID) { return(m_GridService.GetHyperlinks(scopeID)); }