From 5757afe7665543e8b3ed4a322a7d6e095dafcdb3 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 26 Sep 2009 07:48:21 -0700 Subject: First pass at the heart surgery for grid services. Compiles and runs minimally. A few bugs to catch now. --- OpenSim/Services/Connectors/Land/LandServiceConnector.cs | 13 ++++++++----- .../Connectors/Neighbour/NeighbourServiceConnector.cs | 16 ++++++++++------ 2 files changed, 18 insertions(+), 11 deletions(-) (limited to 'OpenSim/Services/Connectors') diff --git a/OpenSim/Services/Connectors/Land/LandServiceConnector.cs b/OpenSim/Services/Connectors/Land/LandServiceConnector.cs index 0243f1f..06bc11c 100644 --- a/OpenSim/Services/Connectors/Land/LandServiceConnector.cs +++ b/OpenSim/Services/Connectors/Land/LandServiceConnector.cs @@ -38,6 +38,7 @@ using OpenSim.Framework.Servers.HttpServer; using OpenSim.Services.Interfaces; using OpenMetaverse; using Nwc.XmlRpc; +using GridRegion = OpenSim.Services.Interfaces.GridRegion; namespace OpenSim.Services.Connectors { @@ -47,20 +48,20 @@ namespace OpenSim.Services.Connectors LogManager.GetLogger( MethodBase.GetCurrentMethod().DeclaringType); - protected IGridServices m_MapService = null; + protected IGridService m_GridService = null; public LandServicesConnector() { } - public LandServicesConnector(IGridServices gridServices) + public LandServicesConnector(IGridService gridServices) { Initialise(gridServices); } - public virtual void Initialise(IGridServices gridServices) + public virtual void Initialise(IGridService gridServices) { - m_MapService = gridServices; + m_GridService = gridServices; } public virtual LandData GetLandData(ulong regionHandle, uint x, uint y) @@ -76,7 +77,9 @@ namespace OpenSim.Services.Connectors try { - RegionInfo info = m_MapService.RequestNeighbourInfo(regionHandle); + uint xpos = 0, ypos = 0; + Utils.LongToUInts(regionHandle, out xpos, out ypos); + GridRegion info = m_GridService.GetRegionByPosition(UUID.Zero, (int)xpos, (int)ypos); if (info != null) // just to be sure { XmlRpcRequest request = new XmlRpcRequest("land_data", paramList); diff --git a/OpenSim/Services/Connectors/Neighbour/NeighbourServiceConnector.cs b/OpenSim/Services/Connectors/Neighbour/NeighbourServiceConnector.cs index 7fff537..1b595e7 100644 --- a/OpenSim/Services/Connectors/Neighbour/NeighbourServiceConnector.cs +++ b/OpenSim/Services/Connectors/Neighbour/NeighbourServiceConnector.cs @@ -41,6 +41,8 @@ using OpenSim.Services.Interfaces; using OpenMetaverse; using OpenMetaverse.StructuredData; +using GridRegion = OpenSim.Services.Interfaces.GridRegion; + namespace OpenSim.Services.Connectors { public class NeighbourServicesConnector : INeighbourService @@ -49,25 +51,27 @@ namespace OpenSim.Services.Connectors LogManager.GetLogger( MethodBase.GetCurrentMethod().DeclaringType); - protected IGridServices m_MapService = null; + protected IGridService m_GridService = null; public NeighbourServicesConnector() { } - public NeighbourServicesConnector(IGridServices gridServices) + public NeighbourServicesConnector(IGridService gridServices) { Initialise(gridServices); } - public virtual void Initialise(IGridServices gridServices) + public virtual void Initialise(IGridService gridServices) { - m_MapService = gridServices; + m_GridService = gridServices; } public virtual bool HelloNeighbour(ulong regionHandle, RegionInfo thisRegion) { - RegionInfo regInfo = m_MapService.RequestNeighbourInfo(regionHandle); + uint x = 0, y = 0; + Utils.LongToUInts(regionHandle, out x, out y); + GridRegion regInfo = m_GridService.GetRegionByPosition(UUID.Zero, (int)x, (int)y); if ((regInfo != null) && // Don't remote-call this instance; that's a startup hickup !((regInfo.ExternalHostName == thisRegion.ExternalHostName) && (regInfo.HttpPort == thisRegion.HttpPort))) @@ -79,7 +83,7 @@ namespace OpenSim.Services.Connectors return false; } - public bool DoHelloNeighbourCall(RegionInfo region, RegionInfo thisRegion) + public bool DoHelloNeighbourCall(GridRegion region, RegionInfo thisRegion) { string uri = "http://" + region.ExternalEndPoint.Address + ":" + region.HttpPort + "/region/" + thisRegion.RegionID + "/"; //m_log.Debug(" >>> DoHelloNeighbourCall <<< " + uri); -- cgit v1.1 From dcfd08b8dd57e667db8e0b5900da4648a020160e Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 26 Sep 2009 11:01:18 -0700 Subject: Fixed a bug with link-region. --- OpenSim/Services/Connectors/Grid/HypergridServiceConnector.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'OpenSim/Services/Connectors') diff --git a/OpenSim/Services/Connectors/Grid/HypergridServiceConnector.cs b/OpenSim/Services/Connectors/Grid/HypergridServiceConnector.cs index b5e8743..cf17557 100644 --- a/OpenSim/Services/Connectors/Grid/HypergridServiceConnector.cs +++ b/OpenSim/Services/Connectors/Grid/HypergridServiceConnector.cs @@ -66,7 +66,7 @@ namespace OpenSim.Services.Connectors.Grid IList paramList = new ArrayList(); paramList.Add(hash); - XmlRpcRequest request = new XmlRpcRequest("linkk_region", paramList); + XmlRpcRequest request = new XmlRpcRequest("link_region", paramList); string uri = "http://" + info.ExternalEndPoint.Address + ":" + info.HttpPort + "/"; m_log.Debug("[HGrid]: Linking to " + uri); XmlRpcResponse response = request.Send(uri, 10000); @@ -82,6 +82,7 @@ namespace OpenSim.Services.Connectors.Grid try { UUID.TryParse((string)hash["uuid"], out uuid); + m_log.Debug(">> HERE, uuid: " + uuid); info.RegionID = uuid; if ((string)hash["handle"] != null) { -- cgit v1.1 From f4bf581b96347b8d7f115eca74fa84a644eb729c Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 26 Sep 2009 21:00:51 -0700 Subject: Moved all HG1 operations to HGGridConnector.cs and HypergridServerConnector.cs/HypergridServiceConnector.cs, away from Region.Communications and HGNetworkServersInfo. Fixed small bugs with hyperlinked regions' map positions. --- .../Connectors/Grid/HypergridServiceConnector.cs | 89 ++++++++++++++++++++++ 1 file changed, 89 insertions(+) (limited to 'OpenSim/Services/Connectors') diff --git a/OpenSim/Services/Connectors/Grid/HypergridServiceConnector.cs b/OpenSim/Services/Connectors/Grid/HypergridServiceConnector.cs index cf17557..dd19b01 100644 --- a/OpenSim/Services/Connectors/Grid/HypergridServiceConnector.cs +++ b/OpenSim/Services/Connectors/Grid/HypergridServiceConnector.cs @@ -149,5 +149,94 @@ namespace OpenSim.Services.Connectors.Grid } } + public bool InformRegionOfUser(GridRegion regInfo, AgentCircuitData agentData, GridRegion home, string userServer, string assetServer, string inventoryServer) + { + string capsPath = agentData.CapsPath; + Hashtable loginParams = new Hashtable(); + loginParams["session_id"] = agentData.SessionID.ToString(); + + loginParams["firstname"] = agentData.firstname; + loginParams["lastname"] = agentData.lastname; + + loginParams["agent_id"] = agentData.AgentID.ToString(); + loginParams["circuit_code"] = agentData.circuitcode.ToString(); + loginParams["startpos_x"] = agentData.startpos.X.ToString(); + loginParams["startpos_y"] = agentData.startpos.Y.ToString(); + loginParams["startpos_z"] = agentData.startpos.Z.ToString(); + loginParams["caps_path"] = capsPath; + + if (home != null) + { + loginParams["region_uuid"] = home.RegionID.ToString(); + loginParams["regionhandle"] = home.RegionHandle.ToString(); + loginParams["home_address"] = home.ExternalHostName; + loginParams["home_port"] = home.HttpPort.ToString(); + loginParams["internal_port"] = home.InternalEndPoint.Port.ToString(); + + m_log.Debug(" --------- Home -------"); + m_log.Debug(" >> " + loginParams["home_address"] + " <<"); + m_log.Debug(" >> " + loginParams["region_uuid"] + " <<"); + m_log.Debug(" >> " + loginParams["regionhandle"] + " <<"); + m_log.Debug(" >> " + loginParams["home_port"] + " <<"); + m_log.Debug(" --------- ------------ -------"); + } + else + m_log.WarnFormat("[HGrid]: Home region not found for {0} {1}", agentData.firstname, agentData.lastname); + + loginParams["userserver_id"] = userServer; + loginParams["assetserver_id"] = assetServer; + loginParams["inventoryserver_id"] = inventoryServer; + + + ArrayList SendParams = new ArrayList(); + SendParams.Add(loginParams); + + // Send + string uri = "http://" + regInfo.ExternalHostName + ":" + regInfo.HttpPort + "/"; + //m_log.Debug("XXX uri: " + uri); + XmlRpcRequest request = new XmlRpcRequest("expect_hg_user", SendParams); + XmlRpcResponse reply; + try + { + reply = request.Send(uri, 6000); + } + catch (Exception e) + { + m_log.Warn("[HGrid]: Failed to notify region about user. Reason: " + e.Message); + return false; + } + + if (!reply.IsFault) + { + bool responseSuccess = true; + if (reply.Value != null) + { + Hashtable resp = (Hashtable)reply.Value; + if (resp.ContainsKey("success")) + { + if ((string)resp["success"] == "FALSE") + { + responseSuccess = false; + } + } + } + if (responseSuccess) + { + m_log.Info("[HGrid]: Successfully informed remote region about user " + agentData.AgentID); + return true; + } + else + { + m_log.ErrorFormat("[HGrid]: Region responded that it is not available to receive clients"); + return false; + } + } + else + { + m_log.ErrorFormat("[HGrid]: XmlRpc request to region failed with message {0}, code {1} ", reply.FaultString, reply.FaultCode); + return false; + } + } + } } -- cgit v1.1 From 5d09c53a1a42b38e1ee35cfbb5571d70b75380f4 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sun, 27 Sep 2009 10:14:10 -0700 Subject: Unpacking the mess with OtherRegionUp, so we can have a real cache of the neighbours in the grid service modules. --- OpenSim/Services/Connectors/Neighbour/NeighbourServiceConnector.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'OpenSim/Services/Connectors') diff --git a/OpenSim/Services/Connectors/Neighbour/NeighbourServiceConnector.cs b/OpenSim/Services/Connectors/Neighbour/NeighbourServiceConnector.cs index 1b595e7..145f212 100644 --- a/OpenSim/Services/Connectors/Neighbour/NeighbourServiceConnector.cs +++ b/OpenSim/Services/Connectors/Neighbour/NeighbourServiceConnector.cs @@ -67,7 +67,7 @@ namespace OpenSim.Services.Connectors m_GridService = gridServices; } - public virtual bool HelloNeighbour(ulong regionHandle, RegionInfo thisRegion) + public virtual GridRegion HelloNeighbour(ulong regionHandle, RegionInfo thisRegion) { uint x = 0, y = 0; Utils.LongToUInts(regionHandle, out x, out y); @@ -76,11 +76,11 @@ namespace OpenSim.Services.Connectors // Don't remote-call this instance; that's a startup hickup !((regInfo.ExternalHostName == thisRegion.ExternalHostName) && (regInfo.HttpPort == thisRegion.HttpPort))) { - return DoHelloNeighbourCall(regInfo, thisRegion); + DoHelloNeighbourCall(regInfo, thisRegion); } //else // m_log.Warn("[REST COMMS]: Region not found " + regionHandle); - return false; + return regInfo; } public bool DoHelloNeighbourCall(GridRegion region, RegionInfo thisRegion) -- cgit v1.1 From 9bdb585a93f824223f20f248e1411ba6da760624 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Mon, 28 Sep 2009 10:56:05 -0700 Subject: Added Protocol versions back, this time in a range model. --- OpenSim/Services/Connectors/Grid/GridServiceConnector.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'OpenSim/Services/Connectors') diff --git a/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs b/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs index 748892a..ba46b0d 100644 --- a/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs +++ b/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs @@ -94,7 +94,8 @@ namespace OpenSim.Services.Connectors sendData[kvp.Key] = (string)kvp.Value; sendData["SCOPEID"] = scopeID.ToString(); - + sendData["VERSIONMIN"] = ProtocolVersions.ClientProtocolVersionMin.ToString(); + sendData["VERSIONMAX"] = ProtocolVersions.ClientProtocolVersionMax.ToString(); sendData["METHOD"] = "register"; string reqString = ServerUtils.BuildQueryString(sendData); -- cgit v1.1 From 6653a30487d76760451467a22849aba725f1e7cf Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Mon, 28 Sep 2009 20:58:21 -0700 Subject: Fixed bug in HG that was causing secondlife:// refs to bomb the client. Also fiddled a bit more with the initial CAP in the user server. --- .../Services/Connectors/Grid/HypergridServiceConnector.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'OpenSim/Services/Connectors') diff --git a/OpenSim/Services/Connectors/Grid/HypergridServiceConnector.cs b/OpenSim/Services/Connectors/Grid/HypergridServiceConnector.cs index dd19b01..3d7f112 100644 --- a/OpenSim/Services/Connectors/Grid/HypergridServiceConnector.cs +++ b/OpenSim/Services/Connectors/Grid/HypergridServiceConnector.cs @@ -69,7 +69,17 @@ namespace OpenSim.Services.Connectors.Grid XmlRpcRequest request = new XmlRpcRequest("link_region", paramList); string uri = "http://" + info.ExternalEndPoint.Address + ":" + info.HttpPort + "/"; m_log.Debug("[HGrid]: Linking to " + uri); - XmlRpcResponse response = request.Send(uri, 10000); + XmlRpcResponse response = null; + try + { + response = request.Send(uri, 10000); + } + catch (Exception e) + { + m_log.Debug("[HGrid]: Exception " + e.Message); + return uuid; + } + if (response.IsFault) { m_log.ErrorFormat("[HGrid]: remote call returned an error: {0}", response.FaultString); -- cgit v1.1 From ee205e7e812e170f670e690a4e0fa9caa652f226 Mon Sep 17 00:00:00 2001 From: Jeff Ames Date: Thu, 1 Oct 2009 01:00:09 +0900 Subject: Formatting cleanup. --- .../Services/Connectors/Authorization/AuthorizationServiceConnector.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'OpenSim/Services/Connectors') diff --git a/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs b/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs index 3167352..7926efb 100644 --- a/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs +++ b/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs @@ -113,7 +113,7 @@ namespace OpenSim.Services.Connectors message = response.Message; return response.IsAuthorized; - } + } } } -- cgit v1.1