From b2e6ec9e12ad07eb08496ebe8ca0476b793017d5 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Sun, 17 Jan 2010 18:04:55 -0800
Subject: Agent gets there through the Gatekeeper, but still a few quirks to
fix.
---
.../Server/Handlers/Hypergrid/HypergridHandlers.cs | 115 +++++++++++++++++++++
1 file changed, 115 insertions(+)
create mode 100644 OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
(limited to 'OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs')
diff --git a/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs b/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
new file mode 100644
index 0000000..baafd7d
--- /dev/null
+++ b/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * 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 OpenSimulator Project nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``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 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;
+using System.Collections.Generic;
+using System.Net;
+using System.Reflection;
+
+using OpenSim.Services.Interfaces;
+using GridRegion = OpenSim.Services.Interfaces.GridRegion;
+
+using log4net;
+using Nwc.XmlRpc;
+using OpenMetaverse;
+
+namespace OpenSim.Server.Handlers.Hypergrid
+{
+ public class HypergridHandlers
+ {
+ private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+ private IGatekeeperService m_GatekeeperService;
+
+ public HypergridHandlers(IGatekeeperService gatekeeper)
+ {
+ m_GatekeeperService = gatekeeper;
+ }
+
+ ///
+ /// Someone wants to link to us
+ ///
+ ///
+ ///
+ public XmlRpcResponse LinkRegionRequest(XmlRpcRequest request, IPEndPoint remoteClient)
+ {
+ Hashtable requestData = (Hashtable)request.Params[0];
+ //string host = (string)requestData["host"];
+ //string portstr = (string)requestData["port"];
+ string name = (string)requestData["region_name"];
+
+ UUID regionID = UUID.Zero;
+ string imageURL = string.Empty;
+ ulong regionHandle = 0;
+ string reason = string.Empty;
+
+ bool success = m_GatekeeperService.LinkRegion(name, out regionID, out regionHandle, out imageURL, out reason);
+
+ Hashtable hash = new Hashtable();
+ hash["result"] = success.ToString();
+ hash["uuid"] = regionID.ToString();
+ hash["handle"] = regionHandle.ToString();
+ hash["region_image"] = imageURL;
+
+ XmlRpcResponse response = new XmlRpcResponse();
+ response.Value = hash;
+ return response;
+ }
+
+ public XmlRpcResponse GetRegion(XmlRpcRequest request, IPEndPoint remoteClient)
+ {
+ Hashtable requestData = (Hashtable)request.Params[0];
+ //string host = (string)requestData["host"];
+ //string portstr = (string)requestData["port"];
+ string regionID_str = (string)requestData["region_uuid"];
+ UUID regionID = UUID.Zero;
+ UUID.TryParse(regionID_str, out regionID);
+
+ GridRegion regInfo = m_GatekeeperService.GetHyperlinkRegion(regionID);
+
+ Hashtable hash = new Hashtable();
+ if (regInfo == null)
+ hash["result"] = "false";
+ else
+ {
+ hash["result"] = "true";
+ hash["uuid"] = regInfo.RegionID.ToString();
+ hash["x"] = regInfo.RegionLocX.ToString();
+ hash["y"] = regInfo.RegionLocY.ToString();
+ hash["region_name"] = regInfo.RegionName;
+ hash["hostname"] = regInfo.ExternalHostName;
+ hash["http_port"] = regInfo.HttpPort.ToString();
+ hash["internal_port"] = regInfo.InternalEndPoint.Port.ToString();
+ }
+ XmlRpcResponse response = new XmlRpcResponse();
+ response.Value = hash;
+ return response;
+
+ }
+
+ }
+}
--
cgit v1.1
From fd64823466ee667d0d827f95d3001ec8675512b2 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Mon, 18 Jan 2010 10:37:11 -0800
Subject: * Added missing GatekeeperServiceConnector * Added basic machinery
for teleporting users home. Untested.
---
.../Server/Handlers/Hypergrid/HypergridHandlers.cs | 33 ++++++++++++++++++++++
1 file changed, 33 insertions(+)
(limited to 'OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs')
diff --git a/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs b/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
index baafd7d..846d1c2 100644
--- a/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
+++ b/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
@@ -111,5 +111,38 @@ namespace OpenSim.Server.Handlers.Hypergrid
}
+ public XmlRpcResponse GetHomeRegion(XmlRpcRequest request, IPEndPoint remoteClient)
+ {
+ Hashtable requestData = (Hashtable)request.Params[0];
+ //string host = (string)requestData["host"];
+ //string portstr = (string)requestData["port"];
+ string userID_str = (string)requestData["userID"];
+ UUID userID = UUID.Zero;
+ UUID.TryParse(userID_str, out userID);
+
+ Vector3 position = Vector3.UnitY, lookAt = Vector3.UnitY;
+ GridRegion regInfo = m_GatekeeperService.GetHomeRegion(userID, out position, out lookAt);
+
+ Hashtable hash = new Hashtable();
+ if (regInfo == null)
+ hash["result"] = "false";
+ else
+ {
+ hash["result"] = "true";
+ hash["uuid"] = regInfo.RegionID.ToString();
+ hash["x"] = regInfo.RegionLocX.ToString();
+ hash["y"] = regInfo.RegionLocY.ToString();
+ hash["region_name"] = regInfo.RegionName;
+ hash["hostname"] = regInfo.ExternalHostName;
+ hash["http_port"] = regInfo.HttpPort.ToString();
+ hash["internal_port"] = regInfo.InternalEndPoint.Port.ToString();
+ hash["position"] = position.ToString();
+ hash["lookAt"] = lookAt.ToString();
+ }
+ XmlRpcResponse response = new XmlRpcResponse();
+ response.Value = hash;
+ return response;
+
+ }
}
}
--
cgit v1.1
From 9fbcceb1db84e62eedb75b2bd43f5e59142ec6c8 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Mon, 18 Jan 2010 20:35:59 -0800
Subject: * Towards enabling hyperlinks at grid-level. * Updated grid configs
---
.../Server/Handlers/Hypergrid/HypergridHandlers.cs | 34 +++++++++++++++++++++-
1 file changed, 33 insertions(+), 1 deletion(-)
(limited to 'OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs')
diff --git a/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs b/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
index 846d1c2..1d711a8 100644
--- a/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
+++ b/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
@@ -44,10 +44,12 @@ namespace OpenSim.Server.Handlers.Hypergrid
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IGatekeeperService m_GatekeeperService;
+ private IHypergridService m_HypergridService;
- public HypergridHandlers(IGatekeeperService gatekeeper)
+ public HypergridHandlers(IGatekeeperService gatekeeper, IHypergridService hyper)
{
m_GatekeeperService = gatekeeper;
+ m_HypergridService = hyper;
}
///
@@ -80,6 +82,36 @@ namespace OpenSim.Server.Handlers.Hypergrid
return response;
}
+ ///
+ /// A local region wants to establish a grid-wide hyperlink to another region
+ ///
+ ///
+ ///
+ public XmlRpcResponse LinkRegionByDescRequest(XmlRpcRequest request, IPEndPoint remoteClient)
+ {
+ Hashtable requestData = (Hashtable)request.Params[0];
+ //string host = (string)requestData["host"];
+ //string portstr = (string)requestData["port"];
+ string descriptor = (string)requestData["region_desc"];
+
+ UUID regionID = UUID.Zero;
+ string imageURL = string.Empty;
+ ulong regionHandle = 0;
+ string reason = string.Empty;
+
+ bool success = m_HypergridService.LinkRegion(descriptor, out regionID, out regionHandle, out imageURL, out reason);
+
+ Hashtable hash = new Hashtable();
+ hash["result"] = success.ToString();
+ hash["uuid"] = regionID.ToString();
+ hash["handle"] = regionHandle.ToString();
+ hash["region_image"] = imageURL;
+
+ XmlRpcResponse response = new XmlRpcResponse();
+ response.Value = hash;
+ return response;
+ }
+
public XmlRpcResponse GetRegion(XmlRpcRequest request, IPEndPoint remoteClient)
{
Hashtable requestData = (Hashtable)request.Params[0];
--
cgit v1.1
From 48b03c2c61a422c3ac9843892a2ae93b29a9f7b8 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Sun, 24 Jan 2010 14:30:48 -0800
Subject: Integrated the hyperlinking with the GridService.
---
.../Server/Handlers/Hypergrid/HypergridHandlers.cs | 34 +---------------------
1 file changed, 1 insertion(+), 33 deletions(-)
(limited to 'OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs')
diff --git a/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs b/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
index 1d711a8..846d1c2 100644
--- a/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
+++ b/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
@@ -44,12 +44,10 @@ namespace OpenSim.Server.Handlers.Hypergrid
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IGatekeeperService m_GatekeeperService;
- private IHypergridService m_HypergridService;
- public HypergridHandlers(IGatekeeperService gatekeeper, IHypergridService hyper)
+ public HypergridHandlers(IGatekeeperService gatekeeper)
{
m_GatekeeperService = gatekeeper;
- m_HypergridService = hyper;
}
///
@@ -82,36 +80,6 @@ namespace OpenSim.Server.Handlers.Hypergrid
return response;
}
- ///
- /// A local region wants to establish a grid-wide hyperlink to another region
- ///
- ///
- ///
- public XmlRpcResponse LinkRegionByDescRequest(XmlRpcRequest request, IPEndPoint remoteClient)
- {
- Hashtable requestData = (Hashtable)request.Params[0];
- //string host = (string)requestData["host"];
- //string portstr = (string)requestData["port"];
- string descriptor = (string)requestData["region_desc"];
-
- UUID regionID = UUID.Zero;
- string imageURL = string.Empty;
- ulong regionHandle = 0;
- string reason = string.Empty;
-
- bool success = m_HypergridService.LinkRegion(descriptor, out regionID, out regionHandle, out imageURL, out reason);
-
- Hashtable hash = new Hashtable();
- hash["result"] = success.ToString();
- hash["uuid"] = regionID.ToString();
- hash["handle"] = regionHandle.ToString();
- hash["region_image"] = imageURL;
-
- XmlRpcResponse response = new XmlRpcResponse();
- response.Value = hash;
- return response;
- }
-
public XmlRpcResponse GetRegion(XmlRpcRequest request, IPEndPoint remoteClient)
{
Hashtable requestData = (Hashtable)request.Params[0];
--
cgit v1.1
From 7c00469cd210cfdda3dd835867469159d4c8b9d9 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Wed, 27 Jan 2010 08:00:29 -0800
Subject: Added ExternalName config on Gatekeeper.
---
OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
(limited to 'OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs')
diff --git a/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs b/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
index 846d1c2..7d31730 100644
--- a/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
+++ b/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
@@ -63,17 +63,19 @@ namespace OpenSim.Server.Handlers.Hypergrid
string name = (string)requestData["region_name"];
UUID regionID = UUID.Zero;
+ string externalName = string.Empty;
string imageURL = string.Empty;
ulong regionHandle = 0;
string reason = string.Empty;
- bool success = m_GatekeeperService.LinkRegion(name, out regionID, out regionHandle, out imageURL, out reason);
+ bool success = m_GatekeeperService.LinkRegion(name, out regionID, out regionHandle, out externalName, out imageURL, out reason);
Hashtable hash = new Hashtable();
hash["result"] = success.ToString();
hash["uuid"] = regionID.ToString();
hash["handle"] = regionHandle.ToString();
hash["region_image"] = imageURL;
+ hash["external_name"] = externalName;
XmlRpcResponse response = new XmlRpcResponse();
response.Value = hash;
--
cgit v1.1
From 00f7d622cbc2c2e61d2efaacd8275da3f9821d8b Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Thu, 28 Jan 2010 19:19:42 -0800
Subject: HG 1.5 is in place. Tested in standalone only.
---
.../Server/Handlers/Hypergrid/HypergridHandlers.cs | 33 ----------------------
1 file changed, 33 deletions(-)
(limited to 'OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs')
diff --git a/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs b/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
index 7d31730..0b65245 100644
--- a/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
+++ b/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
@@ -113,38 +113,5 @@ namespace OpenSim.Server.Handlers.Hypergrid
}
- public XmlRpcResponse GetHomeRegion(XmlRpcRequest request, IPEndPoint remoteClient)
- {
- Hashtable requestData = (Hashtable)request.Params[0];
- //string host = (string)requestData["host"];
- //string portstr = (string)requestData["port"];
- string userID_str = (string)requestData["userID"];
- UUID userID = UUID.Zero;
- UUID.TryParse(userID_str, out userID);
-
- Vector3 position = Vector3.UnitY, lookAt = Vector3.UnitY;
- GridRegion regInfo = m_GatekeeperService.GetHomeRegion(userID, out position, out lookAt);
-
- Hashtable hash = new Hashtable();
- if (regInfo == null)
- hash["result"] = "false";
- else
- {
- hash["result"] = "true";
- hash["uuid"] = regInfo.RegionID.ToString();
- hash["x"] = regInfo.RegionLocX.ToString();
- hash["y"] = regInfo.RegionLocY.ToString();
- hash["region_name"] = regInfo.RegionName;
- hash["hostname"] = regInfo.ExternalHostName;
- hash["http_port"] = regInfo.HttpPort.ToString();
- hash["internal_port"] = regInfo.InternalEndPoint.Port.ToString();
- hash["position"] = position.ToString();
- hash["lookAt"] = lookAt.ToString();
- }
- XmlRpcResponse response = new XmlRpcResponse();
- response.Value = hash;
- return response;
-
- }
}
}
--
cgit v1.1