From 453fadd94071545b76706674bb284402c9a065c0 Mon Sep 17 00:00:00 2001 From: MW Date: Sun, 10 Jun 2007 18:51:45 +0000 Subject: [PATCH] Added SandBoxManager which in sandbox mode, acts as the backend server for the CommsManager interfaces (commsManager.gridServer etc). --- .../GridServer/GridCommsManagerBase.cs | 2 +- .../GridServer/GridCommsManagerLocal.cs | 12 +- .../GridServer/GridCommsManagerOGS.cs | 2 +- .../OpenGrid.Framework.Communications.csproj | 35 +++-- ...penGrid.Framework.Communications.dll.build | 1 + .../RegionServerCommsLocal.cs | 101 +------------- .../RegionServerCommsManager.cs | 10 -- .../RegionServerCommsOGS.cs | 18 --- .../SandBoxManager.cs | 125 ++++++++++++++++++ OpenSim/OpenSim.Region/World/Primitive.cs | 3 - OpenSim/OpenSim.Region/World/World.cs | 4 +- .../OpenSim.RegionServer.dll.build | 2 - OpenSim/OpenSim/OpenSimMain.cs | 2 +- 13 files changed, 163 insertions(+), 154 deletions(-) create mode 100644 Common/OpenGrid.Framework.Communications/SandBoxManager.cs diff --git a/Common/OpenGrid.Framework.Communications/GridServer/GridCommsManagerBase.cs b/Common/OpenGrid.Framework.Communications/GridServer/GridCommsManagerBase.cs index eab7bacc40..6781806bb6 100644 --- a/Common/OpenGrid.Framework.Communications/GridServer/GridCommsManagerBase.cs +++ b/Common/OpenGrid.Framework.Communications/GridServer/GridCommsManagerBase.cs @@ -16,7 +16,7 @@ namespace OpenGrid.Framework.Communications.GridServer /// /// /// - internal virtual RegionCommsHostBase RegisterRegion(RegionInfo regionInfo) + public virtual RegionCommsHostBase RegisterRegion(RegionInfo regionInfo) { return null; } diff --git a/Common/OpenGrid.Framework.Communications/GridServer/GridCommsManagerLocal.cs b/Common/OpenGrid.Framework.Communications/GridServer/GridCommsManagerLocal.cs index 9e7f1e5848..bf7d5b953a 100644 --- a/Common/OpenGrid.Framework.Communications/GridServer/GridCommsManagerLocal.cs +++ b/Common/OpenGrid.Framework.Communications/GridServer/GridCommsManagerLocal.cs @@ -11,19 +11,21 @@ namespace OpenGrid.Framework.Communications.GridServer { public class GridCommsManagerLocal : GridCommsManagerBase { - public GridCommsManagerLocal() - { + private SandBoxManager sandBoxManager; + public GridCommsManagerLocal(SandBoxManager sandManager) + { + sandBoxManager = sandManager; } - internal override RegionCommsHostBase RegisterRegion(RegionInfo regionInfo) + public override RegionCommsHostBase RegisterRegion(RegionInfo regionInfo) { - return null; + return sandBoxManager.RegisterRegion(regionInfo); } public override List RequestNeighbours(RegionInfo regionInfo) { - return null; + return sandBoxManager.RequestNeighbours(regionInfo); } } } diff --git a/Common/OpenGrid.Framework.Communications/GridServer/GridCommsManagerOGS.cs b/Common/OpenGrid.Framework.Communications/GridServer/GridCommsManagerOGS.cs index 17888735a6..acf8911638 100644 --- a/Common/OpenGrid.Framework.Communications/GridServer/GridCommsManagerOGS.cs +++ b/Common/OpenGrid.Framework.Communications/GridServer/GridCommsManagerOGS.cs @@ -13,7 +13,7 @@ namespace OpenGrid.Framework.Communications.GridServer { } - internal override RegionCommsHostBase RegisterRegion(RegionInfo regionInfo) + public override RegionCommsHostBase RegisterRegion(RegionInfo regionInfo) { return null; } diff --git a/Common/OpenGrid.Framework.Communications/OpenGrid.Framework.Communications.csproj b/Common/OpenGrid.Framework.Communications/OpenGrid.Framework.Communications.csproj index 94682be1c9..21a0cd75cf 100644 --- a/Common/OpenGrid.Framework.Communications/OpenGrid.Framework.Communications.csproj +++ b/Common/OpenGrid.Framework.Communications/OpenGrid.Framework.Communications.csproj @@ -1,4 +1,4 @@ - + Local 8.0.50727 @@ -6,7 +6,8 @@ {683344D5-0000-0000-0000-000000000000} Debug AnyCPU - + + OpenGrid.Framework.Communications @@ -15,9 +16,11 @@ IE50 false Library - + + OpenGrid.Framework.Communications - + + @@ -28,7 +31,8 @@ TRACE;DEBUG - + + True 4096 False @@ -37,7 +41,8 @@ False False 4 - + + False @@ -46,7 +51,8 @@ TRACE - + + False 4096 True @@ -55,18 +61,20 @@ False False 4 - + + - + System.dll False - + + System.Xml.dll False - + ..\..\bin\libsecondlife.dll False @@ -76,7 +84,7 @@ OpenSim.Framework {8ACA2445-0000-0000-0000-000000000000} {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - False + False @@ -101,6 +109,7 @@ Code + Code @@ -118,4 +127,4 @@ - + \ No newline at end of file diff --git a/Common/OpenGrid.Framework.Communications/OpenGrid.Framework.Communications.dll.build b/Common/OpenGrid.Framework.Communications/OpenGrid.Framework.Communications.dll.build index a6616bf956..952051bfb9 100644 --- a/Common/OpenGrid.Framework.Communications/OpenGrid.Framework.Communications.dll.build +++ b/Common/OpenGrid.Framework.Communications/OpenGrid.Framework.Communications.dll.build @@ -14,6 +14,7 @@ + diff --git a/Common/OpenGrid.Framework.Communications/RegionServerCommsLocal.cs b/Common/OpenGrid.Framework.Communications/RegionServerCommsLocal.cs index fcccb49cf4..bfcd15ffb0 100644 --- a/Common/OpenGrid.Framework.Communications/RegionServerCommsLocal.cs +++ b/Common/OpenGrid.Framework.Communications/RegionServerCommsLocal.cs @@ -11,117 +11,22 @@ namespace OpenGrid.Framework.Communications { public class RegionServerCommsLocal : RegionServerCommsManager { - protected Dictionary regions = new Dictionary(); - protected Dictionary regionHosts = new Dictionary(); - + public SandBoxManager SandManager = new SandBoxManager(); public RegionServerCommsLocal() { userServer = new UserServer.UserCommsManagerLocal(); //Local User Server - gridServer = new GridServer.GridCommsManagerLocal(); //Locl Grid Server - } - - /// - /// Main Register a region method with the CommsManager. - /// Should do anything that is needed and also call the RegisterRegion method in the gridserver class - /// to inform the grid server (in grid mode). - /// - /// - /// - public override RegionCommsHostBase RegisterRegion(RegionInfo regionInfo) - { - //Console.WriteLine("CommsManager - Region " + regionInfo.RegionHandle + " , " + regionInfo.RegionLocX + " , "+ regionInfo.RegionLocY +" is registering"); - if (!this.regions.ContainsKey((uint)regionInfo.RegionHandle)) - { - //Console.WriteLine("CommsManager - Adding Region " + regionInfo.RegionHandle ); - this.regions.Add(regionInfo.RegionHandle, regionInfo); - RegionCommsHostBase regionHost = new RegionCommsHostBase(); - this.regionHosts.Add(regionInfo.RegionHandle, regionHost); - - return regionHost; - } - - //already in our list of regions so for now lets return null - return null; - } - - /// - /// In the current class structure this shouldn't be here as it should only be in the gridserver class - /// but having it there in sandbox mode makes things very difficult, so for now until something is sorted out - /// it will have to be here as well - /// - /// - /// - public override List RequestNeighbours(RegionInfo regionInfo) - { - // Console.WriteLine("Finding Neighbours to " + regionInfo.RegionHandle); - List neighbours = new List(); - - foreach (RegionInfo reg in this.regions.Values) - { - // Console.WriteLine("CommsManager- RequestNeighbours() checking region " + reg.RegionLocX + " , "+ reg.RegionLocY); - if (reg.RegionHandle != regionInfo.RegionHandle) - { - //Console.WriteLine("CommsManager- RequestNeighbours() - found a different region in list, checking location"); - if ((reg.RegionLocX > (regionInfo.RegionLocX - 2)) && (reg.RegionLocX < (regionInfo.RegionLocX + 2))) - { - if ((reg.RegionLocY > (regionInfo.RegionLocY - 2)) && (reg.RegionLocY < (regionInfo.RegionLocY + 2))) - { - neighbours.Add(reg); - } - } - } - } - return neighbours; + gridServer = new GridServer.GridCommsManagerLocal(SandManager); //Locl Grid Server } /// /// informs a neighbouring sim to expect a child agent - /// I guess if we are going to stick with the current class structure then we need a intersim class - /// but think we need to really rethink the class structure as currently it makes things very messy for sandbox mode /// /// /// /// public override bool InformNeighbourOfChildAgent(ulong regionHandle, AgentCircuitData agentData) //should change from agentCircuitData { - //Console.WriteLine("CommsManager- Trying to Inform a region to expect child agent"); - if (this.regionHosts.ContainsKey(regionHandle)) - { - // Console.WriteLine("CommsManager- Informing a region to expect child agent"); - this.regionHosts[regionHandle].TriggerExpectUser(regionHandle, agentData); - return true; - } - return false; - } - - /// - /// Is a Sandbox mode method, used by the local Login server to inform a region of a connection user/session - /// - /// - /// - /// - public bool AddNewSession(ulong regionHandle, Login loginData) - { - //Console.WriteLine(" comms manager been told to expect new user"); - AgentCircuitData agent = new AgentCircuitData(); - agent.AgentID = loginData.Agent; - agent.firstname = loginData.First; - agent.lastname = loginData.Last; - agent.SessionID = loginData.Session; - agent.SecureSessionID = loginData.SecureSession; - agent.circuitcode = loginData.CircuitCode; - agent.BaseFolder = loginData.BaseFolder; - agent.InventoryFolder = loginData.InventoryFolder; - agent.startpos = new LLVector3(128, 128, 70); - - if (this.regionHosts.ContainsKey(regionHandle)) - { - this.regionHosts[regionHandle].TriggerExpectUser(regionHandle, agent); - return true; - } - - // region not found - return false; + return SandManager.InformNeighbourOfChildAgent(regionHandle, agentData); } } } diff --git a/Common/OpenGrid.Framework.Communications/RegionServerCommsManager.cs b/Common/OpenGrid.Framework.Communications/RegionServerCommsManager.cs index b3a4a8f6c7..810477a965 100644 --- a/Common/OpenGrid.Framework.Communications/RegionServerCommsManager.cs +++ b/Common/OpenGrid.Framework.Communications/RegionServerCommsManager.cs @@ -20,16 +20,6 @@ namespace OpenGrid.Framework.Communications } - public virtual RegionCommsHostBase RegisterRegion(RegionInfo regionInfo) - { - return null; - } - - public virtual List RequestNeighbours(RegionInfo regionInfo) - { - return null; - } - public virtual bool InformNeighbourOfChildAgent(ulong regionHandle, AgentCircuitData agentData) //should change from agentCircuitData { return false; diff --git a/Common/OpenGrid.Framework.Communications/RegionServerCommsOGS.cs b/Common/OpenGrid.Framework.Communications/RegionServerCommsOGS.cs index b746f925ec..75b211d5b0 100644 --- a/Common/OpenGrid.Framework.Communications/RegionServerCommsOGS.cs +++ b/Common/OpenGrid.Framework.Communications/RegionServerCommsOGS.cs @@ -14,27 +14,9 @@ namespace OpenGrid.Framework.Communications gridServer = new GridServer.GridCommsManagerOGS(); //Remote Grid Server } - public override RegionCommsHostBase RegisterRegion(RegionInfo regionInfo) - { - return gridServer.RegisterRegion(regionInfo); - } - - /// - /// In the current class structure this shouldn't be here as it should only be in the gridserver class - /// but having it there in sandbox mode makes things very difficult, so for now until something is sorted out - /// it will have to be here as well - /// - /// - /// - public override List RequestNeighbours(RegionInfo regionInfo) - { - return gridServer.RequestNeighbours(regionInfo); - } /// /// informs a neighbouring sim to expect a child agent - /// I guess if we are going to stick with the current class structure then we need a intersim class - /// but think we need to really rethink the class structure as currently it makes things very messy for sandbox mode /// /// /// diff --git a/Common/OpenGrid.Framework.Communications/SandBoxManager.cs b/Common/OpenGrid.Framework.Communications/SandBoxManager.cs new file mode 100644 index 0000000000..4094658a36 --- /dev/null +++ b/Common/OpenGrid.Framework.Communications/SandBoxManager.cs @@ -0,0 +1,125 @@ +using System; +using System.Collections.Generic; +using System.Text; +using OpenSim.Framework; +using OpenSim.Framework.Types; + +using libsecondlife; + +namespace OpenGrid.Framework.Communications +{ + public class SandBoxManager + { + protected Dictionary regions = new Dictionary(); + protected Dictionary regionHosts = new Dictionary(); + + public SandBoxManager() + { + + } + + /// + /// Main Register a region method with the CommsManager. + /// Should do anything that is needed and also call the RegisterRegion method in the gridserver class + /// to inform the grid server (in grid mode). + /// + /// + /// + public RegionCommsHostBase RegisterRegion(RegionInfo regionInfo) + { + //Console.WriteLine("CommsManager - Region " + regionInfo.RegionHandle + " , " + regionInfo.RegionLocX + " , "+ regionInfo.RegionLocY +" is registering"); + if (!this.regions.ContainsKey((uint)regionInfo.RegionHandle)) + { + //Console.WriteLine("CommsManager - Adding Region " + regionInfo.RegionHandle ); + this.regions.Add(regionInfo.RegionHandle, regionInfo); + RegionCommsHostBase regionHost = new RegionCommsHostBase(); + this.regionHosts.Add(regionInfo.RegionHandle, regionHost); + + return regionHost; + } + + //already in our list of regions so for now lets return null + return null; + } + + /// + /// In the current class structure this shouldn't be here as it should only be in the gridserver class + /// but having it there in sandbox mode makes things very difficult, so for now until something is sorted out + /// it will have to be here as well + /// + /// + /// + public List RequestNeighbours(RegionInfo regionInfo) + { + // Console.WriteLine("Finding Neighbours to " + regionInfo.RegionHandle); + List neighbours = new List(); + + foreach (RegionInfo reg in this.regions.Values) + { + // Console.WriteLine("CommsManager- RequestNeighbours() checking region " + reg.RegionLocX + " , "+ reg.RegionLocY); + if (reg.RegionHandle != regionInfo.RegionHandle) + { + //Console.WriteLine("CommsManager- RequestNeighbours() - found a different region in list, checking location"); + if ((reg.RegionLocX > (regionInfo.RegionLocX - 2)) && (reg.RegionLocX < (regionInfo.RegionLocX + 2))) + { + if ((reg.RegionLocY > (regionInfo.RegionLocY - 2)) && (reg.RegionLocY < (regionInfo.RegionLocY + 2))) + { + neighbours.Add(reg); + } + } + } + } + return neighbours; + } + + /// + /// informs a neighbouring sim to expect a child agent + /// I guess if we are going to stick with the current class structure then we need a intersim class + /// but think we need to really rethink the class structure as currently it makes things very messy for sandbox mode + /// + /// + /// + /// + public bool InformNeighbourOfChildAgent(ulong regionHandle, AgentCircuitData agentData) //should change from agentCircuitData + { + //Console.WriteLine("CommsManager- Trying to Inform a region to expect child agent"); + if (this.regionHosts.ContainsKey(regionHandle)) + { + // Console.WriteLine("CommsManager- Informing a region to expect child agent"); + this.regionHosts[regionHandle].TriggerExpectUser(regionHandle, agentData); + return true; + } + return false; + } + + /// + /// Is a Sandbox mode method, used by the local Login server to inform a region of a connection user/session + /// + /// + /// + /// + public bool AddNewSession(ulong regionHandle, Login loginData) + { + //Console.WriteLine(" comms manager been told to expect new user"); + AgentCircuitData agent = new AgentCircuitData(); + agent.AgentID = loginData.Agent; + agent.firstname = loginData.First; + agent.lastname = loginData.Last; + agent.SessionID = loginData.Session; + agent.SecureSessionID = loginData.SecureSession; + agent.circuitcode = loginData.CircuitCode; + agent.BaseFolder = loginData.BaseFolder; + agent.InventoryFolder = loginData.InventoryFolder; + agent.startpos = new LLVector3(128, 128, 70); + + if (this.regionHosts.ContainsKey(regionHandle)) + { + this.regionHosts[regionHandle].TriggerExpectUser(regionHandle, agent); + return true; + } + + // region not found + return false; + } + } +} diff --git a/OpenSim/OpenSim.Region/World/Primitive.cs b/OpenSim/OpenSim.Region/World/Primitive.cs index c800f212c9..99e349d2f2 100644 --- a/OpenSim/OpenSim.Region/World/Primitive.cs +++ b/OpenSim/OpenSim.Region/World/Primitive.cs @@ -224,7 +224,6 @@ namespace OpenSim.Region public void UpdateTexture(byte[] tex) { this.primData.Texture = tex; - //this.dirtyFlag = true; } /// @@ -387,8 +386,6 @@ namespace OpenSim.Region lPos = this.Pos; lRot = this.rotation; } - - } /// diff --git a/OpenSim/OpenSim.Region/World/World.cs b/OpenSim/OpenSim.Region/World/World.cs index 49ba8fa00c..cf0382a42c 100644 --- a/OpenSim/OpenSim.Region/World/World.cs +++ b/OpenSim/OpenSim.Region/World/World.cs @@ -544,7 +544,7 @@ namespace OpenSim.Region protected void InformClientOfNeighbours(IClientAPI remoteClient) { // Console.WriteLine("informing client of neighbouring regions"); - List neighbours = this.commsManager.RequestNeighbours(this.m_regInfo); + List neighbours = this.commsManager.gridServer.RequestNeighbours(this.m_regInfo); //Console.WriteLine("we have " + neighbours.Count + " neighbouring regions"); if (neighbours != null) @@ -617,7 +617,7 @@ namespace OpenSim.Region /// public void RegisterRegionWithComms() { - this.regionCommsHost = this.commsManager.RegisterRegion(this.m_regInfo); + this.regionCommsHost = this.commsManager.gridServer.RegisterRegion(this.m_regInfo); if (this.regionCommsHost != null) { this.regionCommsHost.OnExpectUser += new ExpectUserDelegate(this.NewUserConnection); diff --git a/OpenSim/OpenSim.RegionServer/OpenSim.RegionServer.dll.build b/OpenSim/OpenSim.RegionServer/OpenSim.RegionServer.dll.build index 8384407bdd..f19da49dfe 100644 --- a/OpenSim/OpenSim.RegionServer/OpenSim.RegionServer.dll.build +++ b/OpenSim/OpenSim.RegionServer/OpenSim.RegionServer.dll.build @@ -12,8 +12,6 @@ - - diff --git a/OpenSim/OpenSim/OpenSimMain.cs b/OpenSim/OpenSim/OpenSimMain.cs index bd07c8ff47..489a949766 100644 --- a/OpenSim/OpenSim/OpenSimMain.cs +++ b/OpenSim/OpenSim/OpenSimMain.cs @@ -131,7 +131,7 @@ namespace OpenSim loginServer = new LoginServer(regionData[0].IPListenAddr, regionData[0].IPListenPort, regionData[0].RegionLocX, regionData[0].RegionLocY, false); loginServer.Startup(); //loginServer.SetSessionHandler(((AuthenticateSessionsLocal)this.AuthenticateSessionsHandler[0]).AddNewSession); - loginServer.SetSessionHandler(((RegionServerCommsLocal)this.commsManager).AddNewSession); + loginServer.SetSessionHandler(((RegionServerCommsLocal)this.commsManager).SandManager.AddNewSession); //sandbox mode with loginserver not using accounts httpServer.AddXmlRPCHandler("login_to_simulator", loginServer.XmlRpcLoginMethod); }