From d89f3e98111c7d228ab6196093eb308445429b72 Mon Sep 17 00:00:00 2001 From: Kunnis Date: Fri, 11 Dec 2009 23:14:01 -0600 Subject: Getting rid of SimpleRegionInfo and SerializableRegionInfo per Mel Signed-off-by: Melanie --- OpenSim/Framework/RegionInfo.cs | 410 ++++++++++++++-------------------------- 1 file changed, 147 insertions(+), 263 deletions(-) (limited to 'OpenSim/Framework/RegionInfo.cs') diff --git a/OpenSim/Framework/RegionInfo.cs b/OpenSim/Framework/RegionInfo.cs index 721233d..88b62e0 100644 --- a/OpenSim/Framework/RegionInfo.cs +++ b/OpenSim/Framework/RegionInfo.cs @@ -38,238 +38,7 @@ using OpenSim.Framework.Console; namespace OpenSim.Framework { - [Serializable] - public class SimpleRegionInfo - { - // private static readonly log4net.ILog m_log - // = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - - /// - /// The port by which http communication occurs with the region (most noticeably, CAPS communication) - /// - public uint HttpPort - { - get { return m_httpPort; } - set { m_httpPort = value; } - } - protected uint m_httpPort; - - /// - /// A well-formed URI for the host region server (namely "http://" + ExternalHostName) - /// - 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; } - } - - /// - /// 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? - /// - 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 ToKeyValuePairs() - { - Dictionary kvp = new Dictionary(); - 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 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 + public class RegionInfo { // private static readonly log4net.ILog m_log // = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); @@ -304,6 +73,19 @@ namespace OpenSim.Framework private bool m_clampPrimSize = false; private int m_objectCapacity = 0; 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. @@ -386,42 +168,17 @@ namespace OpenSim.Framework configMember.performConfigurationRetrieve(); } - public RegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri) : - base(regionLocX, regionLocY, internalEndPoint, externalUri) + public RegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri) { - } - - public RegionInfo() - { - } + m_regionLocX = regionLocX; + m_regionLocY = regionLocY; - 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; + m_internalEndPoint = internalEndPoint; + m_externalHostName = externalUri; } - public RegionInfo(SimpleRegionInfo ConvertFrom) + public RegionInfo() { - 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 @@ -484,6 +241,111 @@ namespace OpenSim.Framework get { return m_regionType; } } + /// + /// The port by which http communication occurs with the region (most noticeably, CAPS communication) + /// + public uint HttpPort + { + get { return m_httpPort; } + set { m_httpPort = value; } + } + + /// + /// A well-formed URI for the host region server (namely "http://" + ExternalHostName) + /// + 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; } + } + + /// + /// 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? + /// + 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) { IPAddress tmpIP = IPAddress.Parse(ipaddr); @@ -1074,5 +936,27 @@ namespace OpenSim.Framework return regionInfo; } + public int getInternalEndPointPort() + { + return m_internalEndPoint.Port; + } + + public Dictionary ToKeyValuePairs() + { + Dictionary kvp = new Dictionary(); + 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; + } } } -- cgit v1.1