From e41eedc9aeba3eb36cdba4fcdf1e57bea976cab4 Mon Sep 17 00:00:00 2001 From: mingchen Date: Wed, 27 Jun 2007 16:39:11 +0000 Subject: *Some more restructuring/fixing -- should compile, but high chance I forgot to add/remove something --- .../Communications.OGS1/OGS1GridServices.cs | 248 --------------------- 1 file changed, 248 deletions(-) delete mode 100644 OpenSim/Framework/Communications.OGS1/OGS1GridServices.cs (limited to 'OpenSim/Framework/Communications.OGS1/OGS1GridServices.cs') diff --git a/OpenSim/Framework/Communications.OGS1/OGS1GridServices.cs b/OpenSim/Framework/Communications.OGS1/OGS1GridServices.cs deleted file mode 100644 index 408643f..0000000 --- a/OpenSim/Framework/Communications.OGS1/OGS1GridServices.cs +++ /dev/null @@ -1,248 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections; -using System.Text; -using System.Runtime.Remoting; -using System.Runtime.Remoting.Channels; -using System.Runtime.Remoting.Channels.Tcp; - -using OpenSim.Servers; -using OpenSim.Framework; -using OpenSim.Framework.Types; -using OpenSim.Framework.Communications; - -using Nwc.XmlRpc; -using libsecondlife; - -namespace OpenSim.Framework.Communications.OGS1 -{ - public class OGS1GridServices : IGridServices, IInterRegionCommunications - { - public Dictionary listeners = new Dictionary(); - public GridInfo grid; - public BaseHttpServer httpListener; - private bool initialised = false; - - public RegionCommsListener RegisterRegion(RegionInfo regionInfo, GridInfo gridInfo) - { - Hashtable GridParams = new Hashtable(); - - grid = gridInfo; - - // Login / Authentication - GridParams["authkey"] = gridInfo.GridServerSendKey; - GridParams["UUID"] = regionInfo.SimUUID.ToStringHyphenated(); - GridParams["sim_ip"] = regionInfo.CommsExternalAddress; - GridParams["sim_port"] = regionInfo.CommsIPListenPort.ToString(); - - // Package into an XMLRPC Request - ArrayList SendParams = new ArrayList(); - SendParams.Add(GridParams); - - // Send Request - XmlRpcRequest GridReq = new XmlRpcRequest("simulator_login", SendParams); - XmlRpcResponse GridResp = GridReq.Send(gridInfo.GridServerURI, 3000); - Hashtable GridRespData = (Hashtable)GridResp.Value; - Hashtable griddatahash = GridRespData; - - // Process Response - if (GridRespData.ContainsKey("error")) - { - string errorstring = (string)GridRespData["error"]; - OpenSim.Framework.Console.MainLog.Instance.Error("Unable to connect to grid: " + errorstring); - return null; - } - - if (!this.listeners.ContainsKey(regionInfo.RegionHandle)) - { - // initialised = true; - httpListener = new BaseHttpServer(regionInfo.CommsIPListenPort); - httpListener.AddXmlRPCHandler("expect_user", this.ExpectUser); - httpListener.Start(); - } - - // Initialise the background listeners - listeners[regionInfo.RegionHandle] = new RegionCommsListener(); - - return listeners[regionInfo.RegionHandle]; - } - - public List RequestNeighbours(RegionInfo regionInfo) - { - Hashtable respData = MapBlockQuery((int)regionInfo.RegionLocX - 1, (int)regionInfo.RegionLocY - 1, (int)regionInfo.RegionLocX + 1, (int)regionInfo.RegionLocY + 1); - - List neighbours = new List(); - - foreach (Hashtable n in (Hashtable)respData.Values) - { - RegionInfo neighbour = new RegionInfo(); - - //OGS1 - neighbour.RegionHandle = (ulong)n["regionhandle"]; - neighbour.RegionLocX = (uint)n["x"]; - neighbour.RegionLocY = (uint)n["y"]; - neighbour.RegionName = (string)n["name"]; - - //OGS1+ - neighbour.CommsIPListenAddr = (string)n["sim_ip"]; - neighbour.CommsIPListenPort = (int)n["sim_port"]; - neighbour.CommsExternalAddress = (string)n["sim_uri"]; - neighbour.SimUUID = (string)n["uuid"]; - - neighbours.Add(neighbour); - } - - return neighbours; - } - - public RegionInfo RequestNeighbourInfo(ulong regionHandle) - { - OpenSim.Framework.Console.MainLog.Instance.Warn("Unimplemented - RequestNeighbourInfo()"); - return null; - } - - public List RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY) - { - Hashtable respData = MapBlockQuery(minX, minY, maxX, maxY); - - List neighbours = new List(); - - foreach (Hashtable n in (Hashtable)respData.Values) - { - MapBlockData neighbour = new MapBlockData(); - - neighbour.X = (ushort)n["x"]; - neighbour.Y = (ushort)n["y"]; - - neighbour.Name = (string)n["name"]; - neighbour.Access = (byte)n["access"]; - neighbour.RegionFlags = (uint)n["region-flags"]; - neighbour.WaterHeight = (byte)n["water-height"]; - neighbour.MapImageId = (string)n["map-image-id"]; - - neighbours.Add(neighbour); - } - - return neighbours; - } - - /// - /// Performs a XML-RPC query against the grid server returning mapblock information in the specified coordinates - /// - /// REDUNDANT - OGS1 is to be phased out in favour of OGS2 - /// Minimum X value - /// Minimum Y value - /// Maximum X value - /// Maximum Y value - /// Hashtable of hashtables containing map data elements - private Hashtable MapBlockQuery(int minX, int minY, int maxX, int maxY) - { - Hashtable param = new Hashtable(); - param["xmin"] = minX; - param["ymin"] = minY; - param["xmax"] = maxX; - param["ymax"] = maxY; - IList parameters = new ArrayList(); - parameters.Add(param); - XmlRpcRequest req = new XmlRpcRequest("map_block", parameters); - XmlRpcResponse resp = req.Send(grid.GridServerURI, 3000); - Hashtable respData = (Hashtable)resp.Value; - return respData; - } - - // Grid Request Processing - public XmlRpcResponse ExpectUser(XmlRpcRequest request) - { - Hashtable requestData = (Hashtable)request.Params[0]; - AgentCircuitData agentData = new AgentCircuitData(); - agentData.SessionID = new LLUUID((string)requestData["session_id"]); - agentData.SecureSessionID = new LLUUID((string)requestData["secure_session_id"]); - agentData.firstname = (string)requestData["firstname"]; - agentData.lastname = (string)requestData["lastname"]; - agentData.AgentID = new LLUUID((string)requestData["agent_id"]); - agentData.circuitcode = Convert.ToUInt32(requestData["circuit_code"]); - if (requestData.ContainsKey("child_agent") && requestData["child_agent"].Equals("1")) - { - agentData.child = true; - } - else - { - agentData.startpos = new LLVector3(Convert.ToUInt32(requestData["startpos_x"]), Convert.ToUInt32(requestData["startpos_y"]), Convert.ToUInt32(requestData["startpos_z"])); - agentData.child = false; - - } - - if (listeners.ContainsKey((ulong)requestData["regionhandle"])) - { - this.listeners[(ulong)requestData["regionhandle"]].TriggerExpectUser((ulong)requestData["regionhandle"], agentData); - } - else - { - OpenSim.Framework.Console.MainLog.Instance.Error("ExpectUser() - Unknown region " + ((ulong)requestData["regionhandle"]).ToString()); - } - - return new XmlRpcResponse(); - } - - #region InterRegion Comms - private void StartRemoting() - { - TcpChannel ch = new TcpChannel(8895); - ChannelServices.RegisterChannel(ch); - - WellKnownServiceTypeEntry wellType = new WellKnownServiceTypeEntry( Type.GetType("OGS1InterRegionRemoting"), "InterRegions", WellKnownObjectMode.Singleton); - RemotingConfiguration.RegisterWellKnownServiceType(wellType); - InterRegionSingleton.Instance.OnArrival += this.IncomingArrival; - InterRegionSingleton.Instance.OnChildAgent += this.IncomingChildAgent; - } - - #region Methods called by regions in this instance - public bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData) - { - if (this.listeners.ContainsKey(regionHandle)) - { - this.listeners[regionHandle].TriggerExpectUser(regionHandle, agentData); - return true; - } - //TODO need to see if we know about where this region is and use .net remoting - // to inform it. - return false; - } - - public bool ExpectAvatarCrossing(ulong regionHandle, libsecondlife.LLUUID agentID, libsecondlife.LLVector3 position) - { - if (this.listeners.ContainsKey(regionHandle)) - { - this.listeners[regionHandle].TriggerExpectAvatarCrossing(regionHandle, agentID, position); - return true; - } - //TODO need to see if we know about where this region is and use .net remoting - // to inform it. - return false; - } - #endregion - - #region Methods triggered by calls from external instances - public bool IncomingChildAgent(ulong regionHandle, AgentCircuitData agentData) - { - if (this.listeners.ContainsKey(regionHandle)) - { - this.listeners[regionHandle].TriggerExpectUser(regionHandle, agentData); - return true; - } - return false; - } - - public bool IncomingArrival(ulong regionHandle, libsecondlife.LLUUID agentID, libsecondlife.LLVector3 position) - { - if (this.listeners.ContainsKey(regionHandle)) - { - this.listeners[regionHandle].TriggerExpectAvatarCrossing(regionHandle, agentID, position); - return true; - } - return false; - } - #endregion - #endregion - } -} -- cgit v1.1