More redirects to HGGridConnector-as-HyperlinkService.

0.6.8-post-fixes
Diva Canto 2009-09-26 08:06:14 -07:00
parent 7253a9453e
commit d39e67d5b2
2 changed files with 20 additions and 6 deletions

View File

@ -567,6 +567,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
foreach (GridRegion r in m_HyperlinkRegions.Values) foreach (GridRegion r in m_HyperlinkRegions.Values)
if (r.RegionHandle == handle) if (r.RegionHandle == handle)
return r; return r;
foreach (GridRegion r in m_knownRegions.Values)
if (r.RegionHandle == handle)
return r;
return null; return null;
} }
@ -575,7 +578,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
foreach (GridRegion r in m_HyperlinkRegions.Values) foreach (GridRegion r in m_HyperlinkRegions.Values)
if ((r.RegionHandle == handle) && (m_HyperlinkHandles.ContainsKey(r.RegionID))) if ((r.RegionHandle == handle) && (m_HyperlinkHandles.ContainsKey(r.RegionID)))
return m_HyperlinkHandles[r.RegionID]; return m_HyperlinkHandles[r.RegionID];
return 0; return handle;
} }
#endregion #endregion

View File

@ -42,6 +42,7 @@ using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Scenes;
using OpenSim.Region.Framework.Scenes.Hypergrid; using OpenSim.Region.Framework.Scenes.Hypergrid;
using OpenSim.Region.Framework.Scenes.Serialization; using OpenSim.Region.Framework.Scenes.Serialization;
using OpenSim.Services.Interfaces;
using GridRegion = OpenSim.Services.Interfaces.GridRegion; using GridRegion = OpenSim.Services.Interfaces.GridRegion;
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion
@ -60,6 +61,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion
protected RegionToRegionClient m_regionClient; protected RegionToRegionClient m_regionClient;
protected IHyperlinkService m_hyperlinkService;
protected bool m_safemode; protected bool m_safemode;
protected IPAddress m_thisIP; protected IPAddress m_thisIP;
@ -135,7 +138,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion
m_localBackend = new LocalInterregionComms(); m_localBackend = new LocalInterregionComms();
m_commsManager = scene.CommsManager; m_commsManager = scene.CommsManager;
m_aScene = scene; m_aScene = scene;
m_regionClient = new RegionToRegionClient(m_aScene); m_hyperlinkService = m_aScene.RequestModuleInterface<IHyperlinkService>();
m_regionClient = new RegionToRegionClient(m_aScene, m_hyperlinkService);
m_thisIP = Util.GetHostFromDNS(scene.RegionInfo.ExternalHostName); m_thisIP = Util.GetHostFromDNS(scene.RegionInfo.ExternalHostName);
} }
@ -789,16 +793,21 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion
protected class RegionToRegionClient : RegionClient protected class RegionToRegionClient : RegionClient
{ {
Scene m_aScene = null; Scene m_aScene = null;
IHyperlinkService m_hyperlinkService;
public RegionToRegionClient(Scene s) public RegionToRegionClient(Scene s, IHyperlinkService hyperService)
{ {
m_aScene = s; m_aScene = s;
m_hyperlinkService = hyperService;
} }
public override ulong GetRegionHandle(ulong handle) public override ulong GetRegionHandle(ulong handle)
{ {
if (m_aScene.SceneGridService is HGSceneCommunicationService) if (m_aScene.SceneGridService is HGSceneCommunicationService)
return ((HGSceneCommunicationService)(m_aScene.SceneGridService)).m_hg.FindRegionHandle(handle); {
if (m_hyperlinkService != null)
return m_hyperlinkService.FindRegionHandle(handle);
}
return handle; return handle;
} }
@ -806,8 +815,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion
public override bool IsHyperlink(ulong handle) public override bool IsHyperlink(ulong handle)
{ {
if (m_aScene.SceneGridService is HGSceneCommunicationService) if (m_aScene.SceneGridService is HGSceneCommunicationService)
return ((HGSceneCommunicationService)(m_aScene.SceneGridService)).m_hg.IsHyperlinkRegion(handle); {
if ((m_hyperlinkService != null) && (m_hyperlinkService.GetHyperlinkRegion(handle) != null))
return true;
}
return false; return false;
} }