From 518a8b9f2ac09a5060e2e59c913dfbe7faf397ef Mon Sep 17 00:00:00 2001 From: Jeff Ames Date: Tue, 25 Nov 2008 16:00:55 +0000 Subject: Update svn properties. --- .../Hypergrid/HGGridServicesGridMode.cs | 570 ++++++++++----------- 1 file changed, 285 insertions(+), 285 deletions(-) (limited to 'OpenSim/Region/Communications/Hypergrid/HGGridServicesGridMode.cs') diff --git a/OpenSim/Region/Communications/Hypergrid/HGGridServicesGridMode.cs b/OpenSim/Region/Communications/Hypergrid/HGGridServicesGridMode.cs index 23258df..a29edb4 100644 --- a/OpenSim/Region/Communications/Hypergrid/HGGridServicesGridMode.cs +++ b/OpenSim/Region/Communications/Hypergrid/HGGridServicesGridMode.cs @@ -1,285 +1,285 @@ -/** - * Copyright (c) 2008, Contributors. All rights reserved. - * 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 Organizations nor the names of Individual - * Contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT OWNER OR 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.Collections.Generic; -using System.Reflection; - -using OpenSim.Framework; -using OpenSim.Framework.Communications; -using OpenSim.Framework.Communications.Cache; -using OpenSim.Framework.Servers; -using OpenSim.Region.Communications.OGS1; -using OpenSim.Region.Environment.Scenes; - -using OpenMetaverse; - -using log4net; - -namespace OpenSim.Region.Communications.Hypergrid -{ - public class HGGridServicesGridMode : HGGridServices - { - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - /// - /// Encapsulate remote backend services for manipulation of grid regions - /// - private OGS1GridServices m_remoteBackend = null; - - public OGS1GridServices RemoteBackend - { - get { return m_remoteBackend; } - } - - - public override string gdebugRegionName - { - get { return m_remoteBackend.gdebugRegionName; } - set { m_remoteBackend.gdebugRegionName = value; } - } - - public override bool RegionLoginsEnabled - { - get { return m_remoteBackend.RegionLoginsEnabled; } - set { m_remoteBackend.RegionLoginsEnabled = value; } - } - - public HGGridServicesGridMode(NetworkServersInfo servers_info, BaseHttpServer httpServe, - AssetCache asscache, SceneManager sman, UserProfileCacheService userv) - : base(servers_info, httpServe, asscache, sman) - { - m_remoteBackend = new OGS1GridServices(servers_info, httpServe); - // Let's deregister this, so we can handle it here first - InterRegionSingleton.Instance.OnChildAgent -= m_remoteBackend.IncomingChildAgent; - InterRegionSingleton.Instance.OnChildAgent += IncomingChildAgent; - m_userProfileCache = userv; - } - - #region IGridServices interface - - public override RegionCommsListener RegisterRegion(RegionInfo regionInfo) - { - if (!regionInfo.RegionID.Equals(UUID.Zero)) - { - m_regionsOnInstance.Add(regionInfo); - return m_remoteBackend.RegisterRegion(regionInfo); - } - else - return base.RegisterRegion(regionInfo); - } - - public override bool DeregisterRegion(RegionInfo regionInfo) - { - bool success = m_remoteBackend.DeregisterRegion(regionInfo); - if (!success) - success = base.DeregisterRegion(regionInfo); - return success; - } - - public override List RequestNeighbours(uint x, uint y) - { - List neighbours = m_remoteBackend.RequestNeighbours(x, y); - List remotes = base.RequestNeighbours(x, y); - neighbours.AddRange(remotes); - - return neighbours; - } - - public override RegionInfo RequestNeighbourInfo(UUID Region_UUID) - { - RegionInfo info = m_remoteBackend.RequestNeighbourInfo(Region_UUID); - if (info == null) - info = base.RequestNeighbourInfo(Region_UUID); - return info; - } - - public override RegionInfo RequestNeighbourInfo(ulong regionHandle) - { - RegionInfo info = m_remoteBackend.RequestNeighbourInfo(regionHandle); - if (info == null) - info = base.RequestNeighbourInfo(regionHandle); - return info; - } - - public override RegionInfo RequestClosestRegion(string regionName) - { - RegionInfo info = m_remoteBackend.RequestClosestRegion(regionName); - if (info == null) - info = base.RequestClosestRegion(regionName); - return info; - } - - public override List RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY) - { - List neighbours = m_remoteBackend.RequestNeighbourMapBlocks(minX, minY, maxX, maxY); - List remotes = base.RequestNeighbourMapBlocks(minX, minY, maxX, maxY); - neighbours.AddRange(remotes); - - return neighbours; - } - - public override LandData RequestLandData(ulong regionHandle, uint x, uint y) - { - LandData land = m_remoteBackend.RequestLandData(regionHandle, x, y); - if (land == null) - land = base.RequestLandData(regionHandle, x, y); - return land; - } - - public override List RequestNamedRegions(string name, int maxNumber) - { - List infos = m_remoteBackend.RequestNamedRegions(name, maxNumber); - List remotes = base.RequestNamedRegions(name, maxNumber); - infos.AddRange(remotes); - return infos; - } - - #endregion - - #region IInterRegionCommunications interface - - public override bool AcknowledgeAgentCrossed(ulong regionHandle, UUID agentId) - { - return m_remoteBackend.AcknowledgeAgentCrossed(regionHandle, agentId); - } - - public override bool AcknowledgePrimCrossed(ulong regionHandle, UUID primID) - { - return m_remoteBackend.AcknowledgePrimCrossed(regionHandle, primID); - } - - public override bool CheckRegion(string address, uint port) - { - return m_remoteBackend.CheckRegion(address, port); - } - - public override bool ChildAgentUpdate(ulong regionHandle, ChildAgentDataUpdate cAgentData) - { - return m_remoteBackend.ChildAgentUpdate(regionHandle, cAgentData); - } - - public override bool ExpectAvatarCrossing(ulong regionHandle, UUID agentID, Vector3 position, bool isFlying) - { - if (base.ExpectAvatarCrossing(regionHandle, agentID, position, isFlying)) - return true; - return m_remoteBackend.ExpectAvatarCrossing(regionHandle, agentID, position, isFlying); - } - - public override bool ExpectPrimCrossing(ulong regionHandle, UUID primID, Vector3 position, bool isFlying) - { - return m_remoteBackend.ExpectPrimCrossing(regionHandle, primID, position, isFlying); - } - - public override bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData) - { - CachedUserInfo user = m_userProfileCache.GetUserDetails(agentData.AgentID); - - if (IsLocalUser(user)) - { - Console.WriteLine("XXX Home User XXX"); - if (IsHyperlinkRegion(regionHandle)) - { - Console.WriteLine("XXX Going Hyperlink XXX"); - return base.InformRegionOfChildAgent(regionHandle, agentData); - } - else - { - // non-hypergrid case - Console.WriteLine("XXX Going local-grid region XXX"); - return m_remoteBackend.InformRegionOfChildAgent(regionHandle, agentData); - } - } - - // Foregin users - Console.WriteLine("XXX Foreign User XXX"); - if (IsLocalRegion(regionHandle)) // regions on the same instance - { - Console.WriteLine("XXX Going onInstance region XXX"); - return m_remoteBackend.InformRegionOfChildAgent(regionHandle, agentData); - } - - if (IsHyperlinkRegion(regionHandle)) // hyperlinked regions - { - Console.WriteLine("XXX Going Hyperlink XXX"); - return base.InformRegionOfChildAgent(regionHandle, agentData); - } - else - { - // foreign user going to a non-local region on the same grid - // We need to inform that region about this user before - // proceeding to the normal backend process. - Console.WriteLine("XXX Going local-grid region XXX"); - RegionInfo regInfo = RequestNeighbourInfo(regionHandle); - if (regInfo != null) - InformRegionOfUser(regInfo, agentData); - return m_remoteBackend.InformRegionOfChildAgent(regionHandle, agentData); - } - - } - - public override bool InformRegionOfPrimCrossing(ulong regionHandle, UUID primID, string objData, int XMLMethod) - { - return m_remoteBackend.InformRegionOfPrimCrossing(regionHandle, primID, objData, XMLMethod); - } - - public override bool RegionUp(SerializableRegionInfo region, ulong regionhandle) - { - if (m_remoteBackend.RegionUp(region, regionhandle)) - return true; - return base.RegionUp(region, regionhandle); - } - - public override bool TellRegionToCloseChildConnection(ulong regionHandle, UUID agentID) - { - return m_remoteBackend.TellRegionToCloseChildConnection(regionHandle, agentID); - } - - - #endregion - - #region Methods triggered by calls from external instances - - /// - /// - /// - /// - /// - /// - public bool IncomingChildAgent(ulong regionHandle, AgentCircuitData agentData) - { - HGIncomingChildAgent(regionHandle, agentData); - - m_log.Info("[HGrid]: Incoming HGrid Agent " + agentData.firstname + " " + agentData.lastname); - - return m_remoteBackend.IncomingChildAgent(regionHandle, agentData); - } - #endregion - - } -} +/** + * Copyright (c) 2008, Contributors. All rights reserved. + * 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 Organizations nor the names of Individual + * Contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT OWNER OR 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.Collections.Generic; +using System.Reflection; + +using OpenSim.Framework; +using OpenSim.Framework.Communications; +using OpenSim.Framework.Communications.Cache; +using OpenSim.Framework.Servers; +using OpenSim.Region.Communications.OGS1; +using OpenSim.Region.Environment.Scenes; + +using OpenMetaverse; + +using log4net; + +namespace OpenSim.Region.Communications.Hypergrid +{ + public class HGGridServicesGridMode : HGGridServices + { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + /// + /// Encapsulate remote backend services for manipulation of grid regions + /// + private OGS1GridServices m_remoteBackend = null; + + public OGS1GridServices RemoteBackend + { + get { return m_remoteBackend; } + } + + + public override string gdebugRegionName + { + get { return m_remoteBackend.gdebugRegionName; } + set { m_remoteBackend.gdebugRegionName = value; } + } + + public override bool RegionLoginsEnabled + { + get { return m_remoteBackend.RegionLoginsEnabled; } + set { m_remoteBackend.RegionLoginsEnabled = value; } + } + + public HGGridServicesGridMode(NetworkServersInfo servers_info, BaseHttpServer httpServe, + AssetCache asscache, SceneManager sman, UserProfileCacheService userv) + : base(servers_info, httpServe, asscache, sman) + { + m_remoteBackend = new OGS1GridServices(servers_info, httpServe); + // Let's deregister this, so we can handle it here first + InterRegionSingleton.Instance.OnChildAgent -= m_remoteBackend.IncomingChildAgent; + InterRegionSingleton.Instance.OnChildAgent += IncomingChildAgent; + m_userProfileCache = userv; + } + + #region IGridServices interface + + public override RegionCommsListener RegisterRegion(RegionInfo regionInfo) + { + if (!regionInfo.RegionID.Equals(UUID.Zero)) + { + m_regionsOnInstance.Add(regionInfo); + return m_remoteBackend.RegisterRegion(regionInfo); + } + else + return base.RegisterRegion(regionInfo); + } + + public override bool DeregisterRegion(RegionInfo regionInfo) + { + bool success = m_remoteBackend.DeregisterRegion(regionInfo); + if (!success) + success = base.DeregisterRegion(regionInfo); + return success; + } + + public override List RequestNeighbours(uint x, uint y) + { + List neighbours = m_remoteBackend.RequestNeighbours(x, y); + List remotes = base.RequestNeighbours(x, y); + neighbours.AddRange(remotes); + + return neighbours; + } + + public override RegionInfo RequestNeighbourInfo(UUID Region_UUID) + { + RegionInfo info = m_remoteBackend.RequestNeighbourInfo(Region_UUID); + if (info == null) + info = base.RequestNeighbourInfo(Region_UUID); + return info; + } + + public override RegionInfo RequestNeighbourInfo(ulong regionHandle) + { + RegionInfo info = m_remoteBackend.RequestNeighbourInfo(regionHandle); + if (info == null) + info = base.RequestNeighbourInfo(regionHandle); + return info; + } + + public override RegionInfo RequestClosestRegion(string regionName) + { + RegionInfo info = m_remoteBackend.RequestClosestRegion(regionName); + if (info == null) + info = base.RequestClosestRegion(regionName); + return info; + } + + public override List RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY) + { + List neighbours = m_remoteBackend.RequestNeighbourMapBlocks(minX, minY, maxX, maxY); + List remotes = base.RequestNeighbourMapBlocks(minX, minY, maxX, maxY); + neighbours.AddRange(remotes); + + return neighbours; + } + + public override LandData RequestLandData(ulong regionHandle, uint x, uint y) + { + LandData land = m_remoteBackend.RequestLandData(regionHandle, x, y); + if (land == null) + land = base.RequestLandData(regionHandle, x, y); + return land; + } + + public override List RequestNamedRegions(string name, int maxNumber) + { + List infos = m_remoteBackend.RequestNamedRegions(name, maxNumber); + List remotes = base.RequestNamedRegions(name, maxNumber); + infos.AddRange(remotes); + return infos; + } + + #endregion + + #region IInterRegionCommunications interface + + public override bool AcknowledgeAgentCrossed(ulong regionHandle, UUID agentId) + { + return m_remoteBackend.AcknowledgeAgentCrossed(regionHandle, agentId); + } + + public override bool AcknowledgePrimCrossed(ulong regionHandle, UUID primID) + { + return m_remoteBackend.AcknowledgePrimCrossed(regionHandle, primID); + } + + public override bool CheckRegion(string address, uint port) + { + return m_remoteBackend.CheckRegion(address, port); + } + + public override bool ChildAgentUpdate(ulong regionHandle, ChildAgentDataUpdate cAgentData) + { + return m_remoteBackend.ChildAgentUpdate(regionHandle, cAgentData); + } + + public override bool ExpectAvatarCrossing(ulong regionHandle, UUID agentID, Vector3 position, bool isFlying) + { + if (base.ExpectAvatarCrossing(regionHandle, agentID, position, isFlying)) + return true; + return m_remoteBackend.ExpectAvatarCrossing(regionHandle, agentID, position, isFlying); + } + + public override bool ExpectPrimCrossing(ulong regionHandle, UUID primID, Vector3 position, bool isFlying) + { + return m_remoteBackend.ExpectPrimCrossing(regionHandle, primID, position, isFlying); + } + + public override bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData) + { + CachedUserInfo user = m_userProfileCache.GetUserDetails(agentData.AgentID); + + if (IsLocalUser(user)) + { + Console.WriteLine("XXX Home User XXX"); + if (IsHyperlinkRegion(regionHandle)) + { + Console.WriteLine("XXX Going Hyperlink XXX"); + return base.InformRegionOfChildAgent(regionHandle, agentData); + } + else + { + // non-hypergrid case + Console.WriteLine("XXX Going local-grid region XXX"); + return m_remoteBackend.InformRegionOfChildAgent(regionHandle, agentData); + } + } + + // Foregin users + Console.WriteLine("XXX Foreign User XXX"); + if (IsLocalRegion(regionHandle)) // regions on the same instance + { + Console.WriteLine("XXX Going onInstance region XXX"); + return m_remoteBackend.InformRegionOfChildAgent(regionHandle, agentData); + } + + if (IsHyperlinkRegion(regionHandle)) // hyperlinked regions + { + Console.WriteLine("XXX Going Hyperlink XXX"); + return base.InformRegionOfChildAgent(regionHandle, agentData); + } + else + { + // foreign user going to a non-local region on the same grid + // We need to inform that region about this user before + // proceeding to the normal backend process. + Console.WriteLine("XXX Going local-grid region XXX"); + RegionInfo regInfo = RequestNeighbourInfo(regionHandle); + if (regInfo != null) + InformRegionOfUser(regInfo, agentData); + return m_remoteBackend.InformRegionOfChildAgent(regionHandle, agentData); + } + + } + + public override bool InformRegionOfPrimCrossing(ulong regionHandle, UUID primID, string objData, int XMLMethod) + { + return m_remoteBackend.InformRegionOfPrimCrossing(regionHandle, primID, objData, XMLMethod); + } + + public override bool RegionUp(SerializableRegionInfo region, ulong regionhandle) + { + if (m_remoteBackend.RegionUp(region, regionhandle)) + return true; + return base.RegionUp(region, regionhandle); + } + + public override bool TellRegionToCloseChildConnection(ulong regionHandle, UUID agentID) + { + return m_remoteBackend.TellRegionToCloseChildConnection(regionHandle, agentID); + } + + + #endregion + + #region Methods triggered by calls from external instances + + /// + /// + /// + /// + /// + /// + public bool IncomingChildAgent(ulong regionHandle, AgentCircuitData agentData) + { + HGIncomingChildAgent(regionHandle, agentData); + + m_log.Info("[HGrid]: Incoming HGrid Agent " + agentData.firstname + " " + agentData.lastname); + + return m_remoteBackend.IncomingChildAgent(regionHandle, agentData); + } + #endregion + + } +} -- cgit v1.1