Getting rid of SimpleRegionInfo and SerializableRegionInfo per Mel
Signed-off-by: Melanie <melanie@t-data.com>mysql-performance
parent
83ca7db4b8
commit
d89f3e9811
|
@ -38,238 +38,7 @@ using OpenSim.Framework.Console;
|
||||||
|
|
||||||
namespace OpenSim.Framework
|
namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
[Serializable]
|
public class RegionInfo
|
||||||
public class SimpleRegionInfo
|
|
||||||
{
|
|
||||||
// private static readonly log4net.ILog m_log
|
|
||||||
// = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The port by which http communication occurs with the region (most noticeably, CAPS communication)
|
|
||||||
/// </summary>
|
|
||||||
public uint HttpPort
|
|
||||||
{
|
|
||||||
get { return m_httpPort; }
|
|
||||||
set { m_httpPort = value; }
|
|
||||||
}
|
|
||||||
protected uint m_httpPort;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// A well-formed URI for the host region server (namely "http://" + ExternalHostName)
|
|
||||||
/// </summary>
|
|
||||||
public string ServerURI
|
|
||||||
{
|
|
||||||
get { return m_serverURI; }
|
|
||||||
set { m_serverURI = value; }
|
|
||||||
}
|
|
||||||
protected string m_serverURI;
|
|
||||||
|
|
||||||
public string RegionName
|
|
||||||
{
|
|
||||||
get { return m_regionName; }
|
|
||||||
set { m_regionName = value; }
|
|
||||||
}
|
|
||||||
protected string m_regionName = String.Empty;
|
|
||||||
|
|
||||||
protected bool Allow_Alternate_Ports;
|
|
||||||
public bool m_allow_alternate_ports;
|
|
||||||
protected string m_externalHostName;
|
|
||||||
|
|
||||||
protected IPEndPoint m_internalEndPoint;
|
|
||||||
protected uint? m_regionLocX;
|
|
||||||
protected uint? m_regionLocY;
|
|
||||||
protected uint m_remotingPort;
|
|
||||||
public UUID RegionID = UUID.Zero;
|
|
||||||
public string RemotingAddress;
|
|
||||||
public UUID ScopeID = UUID.Zero;
|
|
||||||
|
|
||||||
public SimpleRegionInfo()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public SimpleRegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri)
|
|
||||||
{
|
|
||||||
m_regionLocX = regionLocX;
|
|
||||||
m_regionLocY = regionLocY;
|
|
||||||
|
|
||||||
m_internalEndPoint = internalEndPoint;
|
|
||||||
m_externalHostName = externalUri;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SimpleRegionInfo(uint regionLocX, uint regionLocY, string externalUri, uint port)
|
|
||||||
{
|
|
||||||
m_regionLocX = regionLocX;
|
|
||||||
m_regionLocY = regionLocY;
|
|
||||||
|
|
||||||
m_externalHostName = externalUri;
|
|
||||||
|
|
||||||
m_internalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), (int) port);
|
|
||||||
}
|
|
||||||
|
|
||||||
public SimpleRegionInfo(RegionInfo ConvertFrom)
|
|
||||||
{
|
|
||||||
m_regionName = ConvertFrom.RegionName;
|
|
||||||
m_regionLocX = ConvertFrom.RegionLocX;
|
|
||||||
m_regionLocY = ConvertFrom.RegionLocY;
|
|
||||||
m_internalEndPoint = ConvertFrom.InternalEndPoint;
|
|
||||||
m_externalHostName = ConvertFrom.ExternalHostName;
|
|
||||||
m_remotingPort = ConvertFrom.RemotingPort;
|
|
||||||
m_httpPort = ConvertFrom.HttpPort;
|
|
||||||
m_allow_alternate_ports = ConvertFrom.m_allow_alternate_ports;
|
|
||||||
RemotingAddress = ConvertFrom.RemotingAddress;
|
|
||||||
RegionID = UUID.Zero;
|
|
||||||
ServerURI = ConvertFrom.ServerURI;
|
|
||||||
}
|
|
||||||
|
|
||||||
public uint RemotingPort
|
|
||||||
{
|
|
||||||
get { return m_remotingPort; }
|
|
||||||
set { m_remotingPort = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <value>
|
|
||||||
/// This accessor can throw all the exceptions that Dns.GetHostAddresses can throw.
|
|
||||||
///
|
|
||||||
/// XXX Isn't this really doing too much to be a simple getter, rather than an explict method?
|
|
||||||
/// </value>
|
|
||||||
public IPEndPoint ExternalEndPoint
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
// Old one defaults to IPv6
|
|
||||||
//return new IPEndPoint(Dns.GetHostAddresses(m_externalHostName)[0], m_internalEndPoint.Port);
|
|
||||||
|
|
||||||
IPAddress ia = null;
|
|
||||||
// If it is already an IP, don't resolve it - just return directly
|
|
||||||
if (IPAddress.TryParse(m_externalHostName, out ia))
|
|
||||||
return new IPEndPoint(ia, m_internalEndPoint.Port);
|
|
||||||
|
|
||||||
// Reset for next check
|
|
||||||
ia = null;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
foreach (IPAddress Adr in Dns.GetHostAddresses(m_externalHostName))
|
|
||||||
{
|
|
||||||
if (ia == null)
|
|
||||||
ia = Adr;
|
|
||||||
|
|
||||||
if (Adr.AddressFamily == AddressFamily.InterNetwork)
|
|
||||||
{
|
|
||||||
ia = Adr;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (SocketException e)
|
|
||||||
{
|
|
||||||
throw new Exception(
|
|
||||||
"Unable to resolve local hostname " + m_externalHostName + " innerException of type '" +
|
|
||||||
e + "' attached to this exception", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
return new IPEndPoint(ia, m_internalEndPoint.Port);
|
|
||||||
}
|
|
||||||
|
|
||||||
set { m_externalHostName = value.ToString(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public string ExternalHostName
|
|
||||||
{
|
|
||||||
get { return m_externalHostName; }
|
|
||||||
set { m_externalHostName = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public IPEndPoint InternalEndPoint
|
|
||||||
{
|
|
||||||
get { return m_internalEndPoint; }
|
|
||||||
set { m_internalEndPoint = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public uint RegionLocX
|
|
||||||
{
|
|
||||||
get { return m_regionLocX.Value; }
|
|
||||||
set { m_regionLocX = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public uint RegionLocY
|
|
||||||
{
|
|
||||||
get { return m_regionLocY.Value; }
|
|
||||||
set { m_regionLocY = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public ulong RegionHandle
|
|
||||||
{
|
|
||||||
get { return Util.UIntsToLong((RegionLocX * (uint) Constants.RegionSize), (RegionLocY * (uint) Constants.RegionSize)); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getInternalEndPointPort()
|
|
||||||
{
|
|
||||||
return m_internalEndPoint.Port;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Dictionary<string, object> ToKeyValuePairs()
|
|
||||||
{
|
|
||||||
Dictionary<string, object> kvp = new Dictionary<string, object>();
|
|
||||||
kvp["uuid"] = RegionID.ToString();
|
|
||||||
kvp["locX"] = RegionLocX.ToString();
|
|
||||||
kvp["locY"] = RegionLocY.ToString();
|
|
||||||
kvp["external_ip_address"] = ExternalEndPoint.Address.ToString();
|
|
||||||
kvp["external_port"] = ExternalEndPoint.Port.ToString();
|
|
||||||
kvp["external_host_name"] = ExternalHostName;
|
|
||||||
kvp["http_port"] = HttpPort.ToString();
|
|
||||||
kvp["internal_ip_address"] = InternalEndPoint.Address.ToString();
|
|
||||||
kvp["internal_port"] = InternalEndPoint.Port.ToString();
|
|
||||||
kvp["alternate_ports"] = m_allow_alternate_ports.ToString();
|
|
||||||
kvp["server_uri"] = ServerURI;
|
|
||||||
|
|
||||||
return kvp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SimpleRegionInfo(Dictionary<string, object> kvp)
|
|
||||||
{
|
|
||||||
if ((kvp["external_ip_address"] != null) && (kvp["external_port"] != null))
|
|
||||||
{
|
|
||||||
int port = 0;
|
|
||||||
Int32.TryParse((string)kvp["external_port"], out port);
|
|
||||||
IPEndPoint ep = new IPEndPoint(IPAddress.Parse((string)kvp["external_ip_address"]), port);
|
|
||||||
ExternalEndPoint = ep;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
ExternalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0);
|
|
||||||
|
|
||||||
if (kvp["external_host_name"] != null)
|
|
||||||
ExternalHostName = (string)kvp["external_host_name"];
|
|
||||||
|
|
||||||
if (kvp["http_port"] != null)
|
|
||||||
{
|
|
||||||
UInt32 port = 0;
|
|
||||||
UInt32.TryParse((string)kvp["http_port"], out port);
|
|
||||||
HttpPort = port;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((kvp["internal_ip_address"] != null) && (kvp["internal_port"] != null))
|
|
||||||
{
|
|
||||||
int port = 0;
|
|
||||||
Int32.TryParse((string)kvp["internal_port"], out port);
|
|
||||||
IPEndPoint ep = new IPEndPoint(IPAddress.Parse((string)kvp["internal_ip_address"]), port);
|
|
||||||
InternalEndPoint = ep;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
InternalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0);
|
|
||||||
|
|
||||||
if (kvp["alternate_ports"] != null)
|
|
||||||
{
|
|
||||||
bool alts = false;
|
|
||||||
Boolean.TryParse((string)kvp["alternate_ports"], out alts);
|
|
||||||
m_allow_alternate_ports = alts;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (kvp["server_uri"] != null)
|
|
||||||
ServerURI = (string)kvp["server_uri"];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class RegionInfo : SimpleRegionInfo
|
|
||||||
{
|
{
|
||||||
// private static readonly log4net.ILog m_log
|
// private static readonly log4net.ILog m_log
|
||||||
// = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
// = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
@ -304,6 +73,19 @@ namespace OpenSim.Framework
|
||||||
private bool m_clampPrimSize = false;
|
private bool m_clampPrimSize = false;
|
||||||
private int m_objectCapacity = 0;
|
private int m_objectCapacity = 0;
|
||||||
private string m_regionType = String.Empty;
|
private string m_regionType = String.Empty;
|
||||||
|
protected uint m_httpPort;
|
||||||
|
protected string m_serverURI;
|
||||||
|
protected string m_regionName = String.Empty;
|
||||||
|
protected bool Allow_Alternate_Ports;
|
||||||
|
public bool m_allow_alternate_ports;
|
||||||
|
protected string m_externalHostName;
|
||||||
|
protected IPEndPoint m_internalEndPoint;
|
||||||
|
protected uint? m_regionLocX;
|
||||||
|
protected uint? m_regionLocY;
|
||||||
|
protected uint m_remotingPort;
|
||||||
|
public UUID RegionID = UUID.Zero;
|
||||||
|
public string RemotingAddress;
|
||||||
|
public UUID ScopeID = UUID.Zero;
|
||||||
|
|
||||||
|
|
||||||
// Apparently, we're applying the same estatesettings regardless of whether it's local or remote.
|
// Apparently, we're applying the same estatesettings regardless of whether it's local or remote.
|
||||||
|
@ -386,44 +168,19 @@ namespace OpenSim.Framework
|
||||||
configMember.performConfigurationRetrieve();
|
configMember.performConfigurationRetrieve();
|
||||||
}
|
}
|
||||||
|
|
||||||
public RegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri) :
|
public RegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri)
|
||||||
base(regionLocX, regionLocY, internalEndPoint, externalUri)
|
|
||||||
{
|
{
|
||||||
|
m_regionLocX = regionLocX;
|
||||||
|
m_regionLocY = regionLocY;
|
||||||
|
|
||||||
|
m_internalEndPoint = internalEndPoint;
|
||||||
|
m_externalHostName = externalUri;
|
||||||
}
|
}
|
||||||
|
|
||||||
public RegionInfo()
|
public RegionInfo()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public RegionInfo(SerializableRegionInfo ConvertFrom)
|
|
||||||
{
|
|
||||||
m_regionLocX = ConvertFrom.RegionLocX;
|
|
||||||
m_regionLocY = ConvertFrom.RegionLocY;
|
|
||||||
m_internalEndPoint = ConvertFrom.InternalEndPoint;
|
|
||||||
m_externalHostName = ConvertFrom.ExternalHostName;
|
|
||||||
m_remotingPort = ConvertFrom.RemotingPort;
|
|
||||||
m_allow_alternate_ports = ConvertFrom.m_allow_alternate_ports;
|
|
||||||
RemotingAddress = ConvertFrom.RemotingAddress;
|
|
||||||
RegionID = UUID.Zero;
|
|
||||||
proxyUrl = ConvertFrom.ProxyUrl;
|
|
||||||
originRegionID = ConvertFrom.OriginRegionID;
|
|
||||||
RegionName = ConvertFrom.RegionName;
|
|
||||||
ServerURI = ConvertFrom.ServerURI;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RegionInfo(SimpleRegionInfo ConvertFrom)
|
|
||||||
{
|
|
||||||
m_regionLocX = ConvertFrom.RegionLocX;
|
|
||||||
m_regionLocY = ConvertFrom.RegionLocY;
|
|
||||||
m_internalEndPoint = ConvertFrom.InternalEndPoint;
|
|
||||||
m_externalHostName = ConvertFrom.ExternalHostName;
|
|
||||||
m_remotingPort = ConvertFrom.RemotingPort;
|
|
||||||
m_allow_alternate_ports = ConvertFrom.m_allow_alternate_ports;
|
|
||||||
RemotingAddress = ConvertFrom.RemotingAddress;
|
|
||||||
RegionID = UUID.Zero;
|
|
||||||
ServerURI = ConvertFrom.ServerURI;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EstateSettings EstateSettings
|
public EstateSettings EstateSettings
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -484,6 +241,111 @@ namespace OpenSim.Framework
|
||||||
get { return m_regionType; }
|
get { return m_regionType; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The port by which http communication occurs with the region (most noticeably, CAPS communication)
|
||||||
|
/// </summary>
|
||||||
|
public uint HttpPort
|
||||||
|
{
|
||||||
|
get { return m_httpPort; }
|
||||||
|
set { m_httpPort = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A well-formed URI for the host region server (namely "http://" + ExternalHostName)
|
||||||
|
/// </summary>
|
||||||
|
public string ServerURI
|
||||||
|
{
|
||||||
|
get { return m_serverURI; }
|
||||||
|
set { m_serverURI = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string RegionName
|
||||||
|
{
|
||||||
|
get { return m_regionName; }
|
||||||
|
set { m_regionName = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint RemotingPort
|
||||||
|
{
|
||||||
|
get { return m_remotingPort; }
|
||||||
|
set { m_remotingPort = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <value>
|
||||||
|
/// This accessor can throw all the exceptions that Dns.GetHostAddresses can throw.
|
||||||
|
///
|
||||||
|
/// XXX Isn't this really doing too much to be a simple getter, rather than an explict method?
|
||||||
|
/// </value>
|
||||||
|
public IPEndPoint ExternalEndPoint
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
// Old one defaults to IPv6
|
||||||
|
//return new IPEndPoint(Dns.GetHostAddresses(m_externalHostName)[0], m_internalEndPoint.Port);
|
||||||
|
|
||||||
|
IPAddress ia = null;
|
||||||
|
// If it is already an IP, don't resolve it - just return directly
|
||||||
|
if (IPAddress.TryParse(m_externalHostName, out ia))
|
||||||
|
return new IPEndPoint(ia, m_internalEndPoint.Port);
|
||||||
|
|
||||||
|
// Reset for next check
|
||||||
|
ia = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
foreach (IPAddress Adr in Dns.GetHostAddresses(m_externalHostName))
|
||||||
|
{
|
||||||
|
if (ia == null)
|
||||||
|
ia = Adr;
|
||||||
|
|
||||||
|
if (Adr.AddressFamily == AddressFamily.InterNetwork)
|
||||||
|
{
|
||||||
|
ia = Adr;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (SocketException e)
|
||||||
|
{
|
||||||
|
throw new Exception(
|
||||||
|
"Unable to resolve local hostname " + m_externalHostName + " innerException of type '" +
|
||||||
|
e + "' attached to this exception", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new IPEndPoint(ia, m_internalEndPoint.Port);
|
||||||
|
}
|
||||||
|
|
||||||
|
set { m_externalHostName = value.ToString(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ExternalHostName
|
||||||
|
{
|
||||||
|
get { return m_externalHostName; }
|
||||||
|
set { m_externalHostName = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public IPEndPoint InternalEndPoint
|
||||||
|
{
|
||||||
|
get { return m_internalEndPoint; }
|
||||||
|
set { m_internalEndPoint = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint RegionLocX
|
||||||
|
{
|
||||||
|
get { return m_regionLocX.Value; }
|
||||||
|
set { m_regionLocX = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint RegionLocY
|
||||||
|
{
|
||||||
|
get { return m_regionLocY.Value; }
|
||||||
|
set { m_regionLocY = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public ulong RegionHandle
|
||||||
|
{
|
||||||
|
get { return Util.UIntsToLong((RegionLocX * (uint) Constants.RegionSize), (RegionLocY * (uint) Constants.RegionSize)); }
|
||||||
|
}
|
||||||
|
|
||||||
public void SetEndPoint(string ipaddr, int port)
|
public void SetEndPoint(string ipaddr, int port)
|
||||||
{
|
{
|
||||||
IPAddress tmpIP = IPAddress.Parse(ipaddr);
|
IPAddress tmpIP = IPAddress.Parse(ipaddr);
|
||||||
|
@ -1074,5 +936,27 @@ namespace OpenSim.Framework
|
||||||
return regionInfo;
|
return regionInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getInternalEndPointPort()
|
||||||
|
{
|
||||||
|
return m_internalEndPoint.Port;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Dictionary<string, object> ToKeyValuePairs()
|
||||||
|
{
|
||||||
|
Dictionary<string, object> kvp = new Dictionary<string, object>();
|
||||||
|
kvp["uuid"] = RegionID.ToString();
|
||||||
|
kvp["locX"] = RegionLocX.ToString();
|
||||||
|
kvp["locY"] = RegionLocY.ToString();
|
||||||
|
kvp["external_ip_address"] = ExternalEndPoint.Address.ToString();
|
||||||
|
kvp["external_port"] = ExternalEndPoint.Port.ToString();
|
||||||
|
kvp["external_host_name"] = ExternalHostName;
|
||||||
|
kvp["http_port"] = HttpPort.ToString();
|
||||||
|
kvp["internal_ip_address"] = InternalEndPoint.Address.ToString();
|
||||||
|
kvp["internal_port"] = InternalEndPoint.Port.ToString();
|
||||||
|
kvp["alternate_ports"] = m_allow_alternate_ports.ToString();
|
||||||
|
kvp["server_uri"] = ServerURI;
|
||||||
|
|
||||||
|
return kvp;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,202 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) Contributors, http://opensimulator.org/
|
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions are met:
|
|
||||||
* * Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* * Neither the name of the OpenSimulator Project nor the
|
|
||||||
* names of its contributors may be used to endorse or promote products
|
|
||||||
* derived from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.Sockets;
|
|
||||||
using OpenMetaverse;
|
|
||||||
|
|
||||||
namespace OpenSim.Framework
|
|
||||||
{
|
|
||||||
[Serializable]
|
|
||||||
public class SerializableRegionInfo
|
|
||||||
{
|
|
||||||
public bool m_allow_alternate_ports;
|
|
||||||
protected string m_externalHostName;
|
|
||||||
|
|
||||||
/// <value>
|
|
||||||
/// The port by which http communication occurs with the region (most noticeably, CAPS communication)
|
|
||||||
///
|
|
||||||
/// FIXME: Defaulting to 9000 temporarily (on the basis that this is the http port most region
|
|
||||||
/// servers are running) until the revision in which this change is made propogates around grids.
|
|
||||||
/// </value>
|
|
||||||
protected uint m_httpPort = 9000;
|
|
||||||
|
|
||||||
protected IPEndPoint m_internalEndPoint;
|
|
||||||
protected Guid m_originRegionID = UUID.Zero.Guid;
|
|
||||||
protected string m_proxyUrl;
|
|
||||||
protected uint? m_regionLocX;
|
|
||||||
protected uint? m_regionLocY;
|
|
||||||
protected string m_regionName;
|
|
||||||
public uint m_remotingPort;
|
|
||||||
protected string m_serverURI;
|
|
||||||
public Guid RegionID = UUID.Zero.Guid;
|
|
||||||
public string RemotingAddress;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// This is a serializable version of RegionInfo
|
|
||||||
/// </summary>
|
|
||||||
public SerializableRegionInfo()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public SerializableRegionInfo(RegionInfo ConvertFrom)
|
|
||||||
{
|
|
||||||
m_regionLocX = ConvertFrom.RegionLocX;
|
|
||||||
m_regionLocY = ConvertFrom.RegionLocY;
|
|
||||||
m_internalEndPoint = ConvertFrom.InternalEndPoint;
|
|
||||||
m_externalHostName = ConvertFrom.ExternalHostName;
|
|
||||||
m_remotingPort = ConvertFrom.RemotingPort;
|
|
||||||
m_httpPort = ConvertFrom.HttpPort;
|
|
||||||
m_allow_alternate_ports = ConvertFrom.m_allow_alternate_ports;
|
|
||||||
RemotingAddress = ConvertFrom.RemotingAddress;
|
|
||||||
m_proxyUrl = ConvertFrom.proxyUrl;
|
|
||||||
OriginRegionID = ConvertFrom.originRegionID;
|
|
||||||
RegionName = ConvertFrom.RegionName;
|
|
||||||
ServerURI = ConvertFrom.ServerURI;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SerializableRegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri)
|
|
||||||
{
|
|
||||||
m_regionLocX = regionLocX;
|
|
||||||
m_regionLocY = regionLocY;
|
|
||||||
|
|
||||||
m_internalEndPoint = internalEndPoint;
|
|
||||||
m_externalHostName = externalUri;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SerializableRegionInfo(uint regionLocX, uint regionLocY, string externalUri, uint port)
|
|
||||||
{
|
|
||||||
m_regionLocX = regionLocX;
|
|
||||||
m_regionLocY = regionLocY;
|
|
||||||
|
|
||||||
m_externalHostName = externalUri;
|
|
||||||
|
|
||||||
m_internalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), (int) port);
|
|
||||||
}
|
|
||||||
|
|
||||||
public uint RemotingPort
|
|
||||||
{
|
|
||||||
get { return m_remotingPort; }
|
|
||||||
set { m_remotingPort = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public uint HttpPort
|
|
||||||
{
|
|
||||||
get { return m_httpPort; }
|
|
||||||
set { m_httpPort = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public IPEndPoint ExternalEndPoint
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
// Old one defaults to IPv6
|
|
||||||
//return new IPEndPoint(Dns.GetHostAddresses(m_externalHostName)[0], m_internalEndPoint.Port);
|
|
||||||
|
|
||||||
IPAddress ia = null;
|
|
||||||
// If it is already an IP, don't resolve it - just return directly
|
|
||||||
if (IPAddress.TryParse(m_externalHostName, out ia))
|
|
||||||
return new IPEndPoint(ia, m_internalEndPoint.Port);
|
|
||||||
|
|
||||||
// Reset for next check
|
|
||||||
ia = null;
|
|
||||||
|
|
||||||
|
|
||||||
// New method favors IPv4
|
|
||||||
foreach (IPAddress Adr in Dns.GetHostAddresses(m_externalHostName))
|
|
||||||
{
|
|
||||||
if (ia == null)
|
|
||||||
ia = Adr;
|
|
||||||
|
|
||||||
if (Adr.AddressFamily == AddressFamily.InterNetwork)
|
|
||||||
{
|
|
||||||
ia = Adr;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return new IPEndPoint(ia, m_internalEndPoint.Port);
|
|
||||||
}
|
|
||||||
|
|
||||||
set { m_externalHostName = value.ToString(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public string ExternalHostName
|
|
||||||
{
|
|
||||||
get { return m_externalHostName; }
|
|
||||||
set { m_externalHostName = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public IPEndPoint InternalEndPoint
|
|
||||||
{
|
|
||||||
get { return m_internalEndPoint; }
|
|
||||||
set { m_internalEndPoint = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public uint RegionLocX
|
|
||||||
{
|
|
||||||
get { return m_regionLocX.Value; }
|
|
||||||
set { m_regionLocX = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public uint RegionLocY
|
|
||||||
{
|
|
||||||
get { return m_regionLocY.Value; }
|
|
||||||
set { m_regionLocY = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public ulong RegionHandle
|
|
||||||
{
|
|
||||||
get { return Util.UIntsToLong((RegionLocX * (uint) Constants.RegionSize), (RegionLocY * (uint) Constants.RegionSize)); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public string ProxyUrl
|
|
||||||
{
|
|
||||||
get { return m_proxyUrl; }
|
|
||||||
set { m_proxyUrl = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public UUID OriginRegionID
|
|
||||||
{
|
|
||||||
get { return new UUID(m_originRegionID); }
|
|
||||||
set { m_originRegionID = value.Guid; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public string RegionName
|
|
||||||
{
|
|
||||||
get { return m_regionName; }
|
|
||||||
set { m_regionName = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public string ServerURI
|
|
||||||
{
|
|
||||||
get { return m_serverURI; }
|
|
||||||
set { m_serverURI = value; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -356,8 +356,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
neighbours.RemoveAll(delegate(GridRegion r) { return r.RegionID == m_regionInfo.RegionID; });
|
neighbours.RemoveAll(delegate(GridRegion r) { return r.RegionID == m_regionInfo.RegionID; });
|
||||||
|
|
||||||
return neighbours;
|
return neighbours;
|
||||||
//SimpleRegionInfo regionData = m_commsProvider.GridService.RequestNeighbourInfo()
|
|
||||||
//return m_commsProvider.GridService.RequestNeighbours(pRegionLocX, pRegionLocY);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -367,20 +365,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void EnableNeighbourChildAgents(ScenePresence avatar, List<RegionInfo> lstneighbours)
|
public void EnableNeighbourChildAgents(ScenePresence avatar, List<RegionInfo> lstneighbours)
|
||||||
{
|
{
|
||||||
//List<SimpleRegionInfo> neighbours = new List<SimpleRegionInfo>();
|
|
||||||
List<GridRegion> neighbours = new List<GridRegion>();
|
List<GridRegion> neighbours = new List<GridRegion>();
|
||||||
|
|
||||||
////m_commsProvider.GridService.RequestNeighbours(m_regionInfo.RegionLocX, m_regionInfo.RegionLocY);
|
|
||||||
//for (int i = 0; i < lstneighbours.Count; i++)
|
|
||||||
//{
|
|
||||||
// // We don't want to keep sending to regions that consistently fail on comms.
|
|
||||||
// if (!(lstneighbours[i].commFailTF))
|
|
||||||
// {
|
|
||||||
// neighbours.Add(new SimpleRegionInfo(lstneighbours[i]));
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
// we're going to be using the above code once neighbour cache is correct. Currently it doesn't appear to be
|
|
||||||
// So we're temporarily going back to the old method of grabbing it from the Grid Server Every time :/
|
|
||||||
if (m_regionInfo != null)
|
if (m_regionInfo != null)
|
||||||
{
|
{
|
||||||
neighbours = RequestNeighbours(avatar.Scene,m_regionInfo.RegionLocX, m_regionInfo.RegionLocY);
|
neighbours = RequestNeighbours(avatar.Scene,m_regionInfo.RegionLocX, m_regionInfo.RegionLocY);
|
||||||
|
@ -431,7 +417,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
/// Create the necessary child agents
|
/// Create the necessary child agents
|
||||||
List<AgentCircuitData> cagents = new List<AgentCircuitData>();
|
List<AgentCircuitData> cagents = new List<AgentCircuitData>();
|
||||||
//foreach (SimpleRegionInfo neighbour in neighbours)
|
|
||||||
foreach (GridRegion neighbour in neighbours)
|
foreach (GridRegion neighbour in neighbours)
|
||||||
{
|
{
|
||||||
if (neighbour.RegionHandle != avatar.Scene.RegionInfo.RegionHandle)
|
if (neighbour.RegionHandle != avatar.Scene.RegionInfo.RegionHandle)
|
||||||
|
@ -583,7 +568,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
//m_log.Info("[INTER]: " + debugRegionName + ": SceneCommunicationService: Sending InterRegion Notification that region is up " + region.RegionName);
|
//m_log.Info("[INTER]: " + debugRegionName + ": SceneCommunicationService: Sending InterRegion Notification that region is up " + region.RegionName);
|
||||||
|
|
||||||
for (int x = (int)region.RegionLocX - 1; x <= region.RegionLocX + 1; x++)
|
for (int x = (int)region.RegionLocX - 1; x <= region.RegionLocX + 1; x++)
|
||||||
|
{
|
||||||
for (int y = (int)region.RegionLocY - 1; y <= region.RegionLocY + 1; y++)
|
for (int y = (int)region.RegionLocY - 1; y <= region.RegionLocY + 1; y++)
|
||||||
|
{
|
||||||
if (!((x == region.RegionLocX) && (y == region.RegionLocY))) // skip this region
|
if (!((x == region.RegionLocX) && (y == region.RegionLocY))) // skip this region
|
||||||
{
|
{
|
||||||
ulong handle = Utils.UIntsToLong((uint)x * Constants.RegionSize, (uint)y * Constants.RegionSize);
|
ulong handle = Utils.UIntsToLong((uint)x * Constants.RegionSize, (uint)y * Constants.RegionSize);
|
||||||
|
@ -593,24 +580,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
InformNeighborsThatRegionisUpCompleted,
|
InformNeighborsThatRegionisUpCompleted,
|
||||||
d);
|
d);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
//List<GridRegion> neighbours = new List<GridRegion>();
|
}
|
||||||
//// This stays uncached because we don't already know about our neighbors at this point.
|
|
||||||
|
|
||||||
//neighbours = m_scene.GridService.GetNeighbours(m_regionInfo.ScopeID, m_regionInfo.RegionID);
|
|
||||||
//if (neighbours != null)
|
|
||||||
//{
|
|
||||||
// for (int i = 0; i < neighbours.Count; i++)
|
|
||||||
// {
|
|
||||||
// InformNeighbourThatRegionUpDelegate d = InformNeighboursThatRegionIsUpAsync;
|
|
||||||
|
|
||||||
// d.BeginInvoke(neighbourService, region, neighbours[i].RegionHandle,
|
|
||||||
// InformNeighborsThatRegionisUpCompleted,
|
|
||||||
// d);
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
//bool val = m_commsProvider.InterRegion.RegionUp(new SerializableRegionInfo(region));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue