From c48ec978179ade68cf816e3134e11ddde71f8bfc Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Fri, 4 Sep 2009 22:30:30 -0700 Subject: Fixed some long-standing issues with appearance in HG1. --- .../Hypergrid/HGCommunicationsGridMode.cs | 2 +- .../Hypergrid/HGCommunicationsStandalone.cs | 2 +- .../Communications/Hypergrid/HGUserDataPlugin.cs | 72 ++++++++++++++++++++++ .../Communications/Hypergrid/HGUserServices.cs | 2 +- .../Communications/OGS1/OGS1UserDataPlugin.cs | 10 ++- 5 files changed, 82 insertions(+), 6 deletions(-) create mode 100644 OpenSim/Region/Communications/Hypergrid/HGUserDataPlugin.cs (limited to 'OpenSim/Region/Communications') diff --git a/OpenSim/Region/Communications/Hypergrid/HGCommunicationsGridMode.cs b/OpenSim/Region/Communications/Hypergrid/HGCommunicationsGridMode.cs index 381070e..80f2e79 100644 --- a/OpenSim/Region/Communications/Hypergrid/HGCommunicationsGridMode.cs +++ b/OpenSim/Region/Communications/Hypergrid/HGCommunicationsGridMode.cs @@ -59,7 +59,7 @@ namespace OpenSim.Region.Communications.Hypergrid HGUserServices userServices = new HGUserServices(this); // This plugin arrangement could eventually be configurable rather than hardcoded here. userServices.AddPlugin(new TemporaryUserProfilePlugin()); - userServices.AddPlugin(new OGS1UserDataPlugin(this)); + userServices.AddPlugin(new HGUserDataPlugin(this, userServices)); m_userService = userServices; m_messageService = userServices; diff --git a/OpenSim/Region/Communications/Hypergrid/HGCommunicationsStandalone.cs b/OpenSim/Region/Communications/Hypergrid/HGCommunicationsStandalone.cs index 568437d..e4e12d4 100644 --- a/OpenSim/Region/Communications/Hypergrid/HGCommunicationsStandalone.cs +++ b/OpenSim/Region/Communications/Hypergrid/HGCommunicationsStandalone.cs @@ -57,7 +57,7 @@ namespace OpenSim.Region.Communications.Hypergrid HGUserServices hgUserService = new HGUserServices(this, localUserService); // This plugin arrangement could eventually be configurable rather than hardcoded here. hgUserService.AddPlugin(new TemporaryUserProfilePlugin()); - hgUserService.AddPlugin(new OGS1UserDataPlugin(this)); + hgUserService.AddPlugin(new HGUserDataPlugin(this, hgUserService)); m_userService = hgUserService; m_userAdminService = hgUserService; diff --git a/OpenSim/Region/Communications/Hypergrid/HGUserDataPlugin.cs b/OpenSim/Region/Communications/Hypergrid/HGUserDataPlugin.cs new file mode 100644 index 0000000..4b8fc26 --- /dev/null +++ b/OpenSim/Region/Communications/Hypergrid/HGUserDataPlugin.cs @@ -0,0 +1,72 @@ +/* + * 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 System.Text.RegularExpressions; +using System.Xml.Serialization; +using log4net; +using Nwc.XmlRpc; +using OpenMetaverse; +using OpenSim.Data; +using OpenSim.Framework; +using OpenSim.Framework.Communications; +using OpenSim.Framework.Communications.Clients; +using OpenSim.Region.Communications.OGS1; + +namespace OpenSim.Region.Communications.Hypergrid +{ + public class HGUserDataPlugin : OGS1UserDataPlugin + { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + HGUserServices m_UserServices; + + public HGUserDataPlugin() + { + } + + public HGUserDataPlugin(CommunicationsManager commsManager, HGUserServices userServices) + { + m_log.DebugFormat("[HG USER SERVICES]: {0} initialized", Name); + m_commsManager = commsManager; + m_UserServices = userServices; + } + + protected override string GetUserServerURL(UUID userID) + { + string url = string.Empty; + if (m_UserServices.IsForeignUser(userID, out url)) + return url; + return m_commsManager.NetworkServersInfo.UserURL; + } + + } +} diff --git a/OpenSim/Region/Communications/Hypergrid/HGUserServices.cs b/OpenSim/Region/Communications/Hypergrid/HGUserServices.cs index 68a9076..aaa1c78 100644 --- a/OpenSim/Region/Communications/Hypergrid/HGUserServices.cs +++ b/OpenSim/Region/Communications/Hypergrid/HGUserServices.cs @@ -311,7 +311,7 @@ namespace OpenSim.Region.Communications.Hypergrid return m_commsManager.NetworkServersInfo.UserURL; } - private bool IsForeignUser(UUID userID, out string userServerURL) + public bool IsForeignUser(UUID userID, out string userServerURL) { userServerURL = string.Empty; CachedUserInfo uinfo = m_commsManager.UserProfileCacheService.GetUserDetails(userID); diff --git a/OpenSim/Region/Communications/OGS1/OGS1UserDataPlugin.cs b/OpenSim/Region/Communications/OGS1/OGS1UserDataPlugin.cs index 9f234be..92e6ae3 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1UserDataPlugin.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1UserDataPlugin.cs @@ -48,6 +48,10 @@ namespace OpenSim.Region.Communications.OGS1 protected CommunicationsManager m_commsManager; + public OGS1UserDataPlugin() + { + } + public OGS1UserDataPlugin(CommunicationsManager commsManager) { m_log.DebugFormat("[OGS1 USER SERVICES]: {0} initialized", Name); @@ -603,7 +607,7 @@ namespace OpenSim.Region.Communications.OGS1 { if ((string)respData["returnString"] == "TRUE") { - + m_log.DebugFormat("[OGS1 USER SERVICES]: Updated user appearance in {0}", GetUserServerURL(user)); } else { @@ -622,8 +626,8 @@ namespace OpenSim.Region.Communications.OGS1 } catch (WebException e) { - m_log.Warn("[OGS1 USER SERVICES]: Error when trying to update Avatar's appearance: " + - e.Message); + m_log.WarnFormat("[OGS1 USER SERVICES]: Error when trying to update Avatar's appearance in {0}: {1}", + GetUserServerURL(user), e.Message); // Return Empty list (no friends) } } -- cgit v1.1