Adds support for unlink-region command in hypergrid.
parent
87822c5d95
commit
a7d610ffcc
|
@ -65,6 +65,9 @@ namespace OpenSim.Framework.Communications
|
||||||
|
|
||||||
RegionInfo RequestNeighbourInfo(ulong regionHandle);
|
RegionInfo RequestNeighbourInfo(ulong regionHandle);
|
||||||
RegionInfo RequestNeighbourInfo(UUID regionID);
|
RegionInfo RequestNeighbourInfo(UUID regionID);
|
||||||
|
RegionInfo RequestNeighbourInfo(string name);
|
||||||
|
RegionInfo RequestNeighbourInfo(string host, uint port);
|
||||||
|
|
||||||
RegionInfo RequestClosestRegion(string regionName);
|
RegionInfo RequestClosestRegion(string regionName);
|
||||||
Dictionary<string, string> GetGridSettings();
|
Dictionary<string, string> GetGridSettings();
|
||||||
List<MapBlockData> RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY);
|
List<MapBlockData> RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY);
|
||||||
|
|
|
@ -69,6 +69,9 @@ namespace OpenSim
|
||||||
MainConsole.Instance.Commands.AddCommand("hypergrid", false, "link-region",
|
MainConsole.Instance.Commands.AddCommand("hypergrid", false, "link-region",
|
||||||
"link-region <Xloc> <Yloc> <HostName>:<HttpPort>[:<RemoteRegionName>] <cr>",
|
"link-region <Xloc> <Yloc> <HostName>:<HttpPort>[:<RemoteRegionName>] <cr>",
|
||||||
"Link a hypergrid region", RunCommand);
|
"Link a hypergrid region", RunCommand);
|
||||||
|
MainConsole.Instance.Commands.AddCommand("hypergrid", false, "unlink-region",
|
||||||
|
"unlink-region <local name> or <HostName>:<HttpPort> <cr>",
|
||||||
|
"Unlink a hypergrid region", RunCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override Scene CreateScene(RegionInfo regionInfo, StorageManager storageManager,
|
protected override Scene CreateScene(RegionInfo regionInfo, StorageManager storageManager,
|
||||||
|
@ -188,6 +191,18 @@ namespace OpenSim
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else if (command.Equals("unlink-region"))
|
||||||
|
{
|
||||||
|
if (cmdparams.Count < 1)
|
||||||
|
{
|
||||||
|
UnlinkRegionCmdUsage();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (HGHyperlink.TryUnlinkRegion(m_sceneManager.CurrentOrFirstScene, cmdparams[0]))
|
||||||
|
m_log.InfoFormat("[HGrid]: Successfully unlinked {0}", cmdparams[0]);
|
||||||
|
else
|
||||||
|
m_log.InfoFormat("[HGrid]: Unable to unlink {0}, region not found", cmdparams[0]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LoadXmlLinkFile(List<string> cmdparams)
|
private void LoadXmlLinkFile(List<string> cmdparams)
|
||||||
|
@ -279,5 +294,12 @@ namespace OpenSim
|
||||||
m_log.Info("Usage: link-region <Xloc> <Yloc> <HostName> <HttpPort> [<LocalName>]");
|
m_log.Info("Usage: link-region <Xloc> <Yloc> <HostName> <HttpPort> [<LocalName>]");
|
||||||
m_log.Info("Usage: link-region <URI_of_xml> [<exclude>]");
|
m_log.Info("Usage: link-region <URI_of_xml> [<exclude>]");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void UnlinkRegionCmdUsage()
|
||||||
|
{
|
||||||
|
m_log.Info("Usage: unlink-region <HostName>:<HttpPort>");
|
||||||
|
m_log.Info("Usage: unlink-region <LocalName>");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -258,6 +258,47 @@ namespace OpenSim.Region.Communications.Hypergrid
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual RegionInfo RequestNeighbourInfo(string name)
|
||||||
|
{
|
||||||
|
foreach (RegionInfo info in m_hyperlinkRegions)
|
||||||
|
{
|
||||||
|
//m_log.Debug(" .. " + info.RegionHandle);
|
||||||
|
if (info.RegionName == name) return info;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (RegionInfo info in m_knownRegions.Values)
|
||||||
|
{
|
||||||
|
if (info.RegionName == name)
|
||||||
|
{
|
||||||
|
//m_log.Debug("XXX------ known region " + info.RegionHandle);
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual RegionInfo RequestNeighbourInfo(string hostName, uint port)
|
||||||
|
{
|
||||||
|
foreach (RegionInfo info in m_hyperlinkRegions)
|
||||||
|
{
|
||||||
|
//m_log.Debug(" .. " + info.RegionHandle);
|
||||||
|
if ((info.ExternalHostName == hostName) && (info.HttpPort == port))
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (RegionInfo info in m_knownRegions.Values)
|
||||||
|
{
|
||||||
|
if ((info.ExternalHostName == hostName) && (info.HttpPort == port))
|
||||||
|
{
|
||||||
|
//m_log.Debug("XXX------ known region " + info.RegionHandle);
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public virtual RegionInfo RequestClosestRegion(string regionName)
|
public virtual RegionInfo RequestClosestRegion(string regionName)
|
||||||
{
|
{
|
||||||
foreach (RegionInfo info in m_hyperlinkRegions)
|
foreach (RegionInfo info in m_hyperlinkRegions)
|
||||||
|
|
|
@ -198,6 +198,38 @@ namespace OpenSim.Region.Communications.Local
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get information about a neighbouring region
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="regionHandle"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public RegionInfo RequestNeighbourInfo(string name)
|
||||||
|
{
|
||||||
|
foreach (RegionInfo info in m_regions.Values)
|
||||||
|
{
|
||||||
|
if (info.RegionName == name)
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get information about a neighbouring region
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="regionHandle"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public RegionInfo RequestNeighbourInfo(string host, uint port)
|
||||||
|
{
|
||||||
|
foreach (RegionInfo info in m_regions.Values)
|
||||||
|
{
|
||||||
|
if ((info.ExternalHostName == host) && (info.HttpPort == port))
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get information about the closet region given a region name.
|
/// Get information about the closet region given a region name.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -445,6 +445,28 @@ namespace OpenSim.Region.Communications.OGS1
|
||||||
return regionInfo;
|
return regionInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get information about a neighbouring region
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="regionHandle"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public RegionInfo RequestNeighbourInfo(string name)
|
||||||
|
{
|
||||||
|
// Not implemented yet
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get information about a neighbouring region
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="regionHandle"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public RegionInfo RequestNeighbourInfo(string host, uint port)
|
||||||
|
{
|
||||||
|
// Not implemented yet
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public RegionInfo RequestClosestRegion(string regionName)
|
public RegionInfo RequestClosestRegion(string regionName)
|
||||||
{
|
{
|
||||||
foreach (RegionInfo ri in m_remoteRegionInfoCache.Values)
|
foreach (RegionInfo ri in m_remoteRegionInfoCache.Values)
|
||||||
|
|
|
@ -149,6 +149,48 @@ namespace OpenSim.Region.Framework.Scenes.Hypergrid
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool TryUnlinkRegion(Scene m_scene, string mapName)
|
||||||
|
{
|
||||||
|
RegionInfo regInfo = null;
|
||||||
|
if (mapName.Contains(":"))
|
||||||
|
{
|
||||||
|
string host = "127.0.0.1";
|
||||||
|
string portstr;
|
||||||
|
string regionName = "";
|
||||||
|
uint port = 9000;
|
||||||
|
string[] parts = mapName.Split(new char[] { ':' });
|
||||||
|
if (parts.Length >= 1)
|
||||||
|
{
|
||||||
|
host = parts[0];
|
||||||
|
}
|
||||||
|
if (parts.Length >= 2)
|
||||||
|
{
|
||||||
|
portstr = parts[1];
|
||||||
|
if (!UInt32.TryParse(portstr, out port))
|
||||||
|
regionName = parts[1];
|
||||||
|
}
|
||||||
|
// always take the last one
|
||||||
|
if (parts.Length >= 3)
|
||||||
|
{
|
||||||
|
regionName = parts[2];
|
||||||
|
}
|
||||||
|
regInfo = m_scene.CommsManager.GridService.RequestNeighbourInfo(host, port);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
regInfo = m_scene.CommsManager.GridService.RequestNeighbourInfo(mapName);
|
||||||
|
}
|
||||||
|
if (regInfo != null)
|
||||||
|
{
|
||||||
|
return m_scene.CommsManager.GridService.DeregisterRegion(regInfo);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_log.InfoFormat("[HGrid]: Region {0} not found", mapName);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Cope with this viewer limitation.
|
/// Cope with this viewer limitation.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
Loading…
Reference in New Issue