From c52f9c04e28023a54e51b941b57872322417ac1c Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Wed, 18 Jul 2007 00:27:11 +0000 Subject: * One hopefully-final attempt at fixing this remoting issue. --- .../Region/Communications/OGS1/OGS1GridServices.cs | 112 ++++++++++++--------- 1 file changed, 64 insertions(+), 48 deletions(-) diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs index a859826..13a37dd 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs @@ -335,37 +335,45 @@ namespace OpenSim.Region.Communications.OGS1 /// public bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData) { - if (this.listeners.ContainsKey(regionHandle)) - { - this.listeners[regionHandle].TriggerExpectUser(regionHandle, agentData); - return true; - } - RegionInfo regInfo = this.RequestNeighbourInfo(regionHandle); - if (regInfo != null) + try { - //don't want to be creating a new link to the remote instance every time like we are here - bool retValue = false; - - - OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting)Activator.GetObject( - typeof(OGS1InterRegionRemoting), - "tcp://"+ regInfo.RemotingAddress+":"+regInfo.RemotingPort+"/InterRegions"); - if (remObject != null) + if (this.listeners.ContainsKey(regionHandle)) { - - retValue = remObject.InformRegionOfChildAgent(regionHandle, agentData); + this.listeners[regionHandle].TriggerExpectUser(regionHandle, agentData); + return true; } - else + RegionInfo regInfo = this.RequestNeighbourInfo(regionHandle); + if (regInfo != null) { - Console.WriteLine("remoting object not found"); - } - remObject = null; + //don't want to be creating a new link to the remote instance every time like we are here + bool retValue = false; + + + OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting)Activator.GetObject( + typeof(OGS1InterRegionRemoting), + "tcp://" + regInfo.RemotingAddress + ":" + regInfo.RemotingPort + "/InterRegions"); + if (remObject != null) + { + + retValue = remObject.InformRegionOfChildAgent(regionHandle, agentData); + } + else + { + Console.WriteLine("remoting object not found"); + } + remObject = null; - return retValue; + return retValue; + } + + return false; + } + catch (System.Runtime.Remoting.RemotingException e) + { + MainLog.Instance.Error("Remoting Error: Unable to connect to remote region.\n" + e.ToString()); + return false; } - - return false; } /// @@ -377,37 +385,45 @@ namespace OpenSim.Region.Communications.OGS1 /// public bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position) { - if (this.listeners.ContainsKey(regionHandle)) - { - this.listeners[regionHandle].TriggerExpectAvatarCrossing(regionHandle, agentID, position); - return true; - } - RegionInfo regInfo = this.RequestNeighbourInfo(regionHandle); - if (regInfo != null) + try { - bool retValue = false; - - - OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting)Activator.GetObject( - typeof(OGS1InterRegionRemoting), - "tcp://" + regInfo.RemotingAddress + ":" + regInfo.RemotingPort + "/InterRegions"); - if (remObject != null) + if (this.listeners.ContainsKey(regionHandle)) { - - retValue = remObject.ExpectAvatarCrossing(regionHandle, agentID, position); + this.listeners[regionHandle].TriggerExpectAvatarCrossing(regionHandle, agentID, position); + return true; } - else + RegionInfo regInfo = this.RequestNeighbourInfo(regionHandle); + if (regInfo != null) { - Console.WriteLine("remoting object not found"); - } - remObject = null; + bool retValue = false; + + + OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting)Activator.GetObject( + typeof(OGS1InterRegionRemoting), + "tcp://" + regInfo.RemotingAddress + ":" + regInfo.RemotingPort + "/InterRegions"); + if (remObject != null) + { + + retValue = remObject.ExpectAvatarCrossing(regionHandle, agentID, position); + } + else + { + Console.WriteLine("remoting object not found"); + } + remObject = null; - return retValue; + return retValue; + } + //TODO need to see if we know about where this region is and use .net remoting + // to inform it. + return false; + } + catch (System.Runtime.Remoting.RemotingException e) + { + MainLog.Instance.Error("Remoting Error: Unable to connect to remote region.\n" + e.ToString()); + return false; } - //TODO need to see if we know about where this region is and use .net remoting - // to inform it. - return false; } #endregion -- cgit v1.1