diff --git a/OpenSim/Capabilities/LLSDEnvironmentSettings.cs b/OpenSim/Capabilities/LLSDEnvironmentSettings.cs deleted file mode 100644 index 39019af22c..0000000000 --- a/OpenSim/Capabilities/LLSDEnvironmentSettings.cs +++ /dev/null @@ -1,68 +0,0 @@ -/* - * 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.Generic; -using OpenMetaverse; - -namespace OpenSim.Framework.Capabilities -{ - [OSDMap] - public class LLSDEnvironmentRequest - { - public UUID messageID; - public UUID regionID; - } - - [OSDMap] - public class LLSDEnvironmentSetResponse - { - public UUID regionID; - public UUID messageID; - public Boolean success; - public String fail_reason; - } - - public class EnvironmentSettings - { - /// - /// generates a empty llsd settings response for viewer - /// - /// the message UUID - /// the region UUID - public static string EmptySettings(UUID messageID, UUID regionID) - { - OSDArray arr = new OSDArray(); - LLSDEnvironmentRequest msg = new LLSDEnvironmentRequest(); - msg.messageID = messageID; - msg.regionID = regionID; - arr.Array.Add(msg); - return LLSDHelpers.SerialiseLLSDReply(arr); - } - } - -} diff --git a/OpenSim/Region/CoreModules/World/LightShare/EnvironmentModule.cs b/OpenSim/Region/CoreModules/World/LightShare/EnvironmentModule.cs index c3cea7a58f..02378f2f0a 100644 --- a/OpenSim/Region/CoreModules/World/LightShare/EnvironmentModule.cs +++ b/OpenSim/Region/CoreModules/World/LightShare/EnvironmentModule.cs @@ -27,6 +27,7 @@ using System; using System.Reflection; +using System.Text; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Framework.Capabilities; @@ -55,8 +56,6 @@ namespace OpenSim.Region.CoreModules.World.LightShare private static readonly string capsName = "EnvironmentSettings"; private static readonly string capsBase = "/CAPS/0020/"; - private LLSDEnvironmentSetResponse setResponse = null; - #region INonSharedRegionModule public void Initialise(IConfigSource source) { @@ -105,7 +104,6 @@ namespace OpenSim.Region.CoreModules.World.LightShare if (!Enabled) return; - setResponse = new LLSDEnvironmentSetResponse(); scene.EventManager.OnRegisterCaps += OnRegisterCaps; } @@ -179,7 +177,16 @@ namespace OpenSim.Region.CoreModules.World.LightShare } if (String.IsNullOrEmpty(env)) - env = EnvironmentSettings.EmptySettings(UUID.Zero, regionID); + { + StringBuilder sb = LLSDxmlEncode.Start(); + LLSDxmlEncode.AddArray(sb); + LLSDxmlEncode.AddMap(sb); + LLSDxmlEncode.AddElem("messageID", UUID.Zero, sb); + LLSDxmlEncode.AddElem("regionID", regionID, sb); + LLSDxmlEncode.AddEndMap(sb); + LLSDxmlEncode.AddEndArray(sb); + env = LLSDxmlEncode.End(sb); + } return env; } @@ -191,33 +198,42 @@ namespace OpenSim.Region.CoreModules.World.LightShare // m_log.DebugFormat("[{0}]: Environment SET handle from agentID {1} in region {2}", // Name, agentID, caps.RegionName); - setResponse.regionID = regionID; - setResponse.success = false; + bool success = false; + string fail_reason = ""; if (!m_scene.Permissions.CanIssueEstateCommand(agentID, false)) { - setResponse.fail_reason = "Insufficient estate permissions, settings has not been saved."; - return LLSDHelpers.SerialiseLLSDReply(setResponse); + fail_reason = "Insufficient estate permissions, settings has not been saved."; } - - try + else { - m_scene.SimulationDataService.StoreRegionEnvironmentSettings(regionID, request); - setResponse.success = true; + try + { + m_scene.SimulationDataService.StoreRegionEnvironmentSettings(regionID, request); + success = true; - m_log.InfoFormat("[{0}]: New Environment settings has been saved from agentID {1} in region {2}", - Name, agentID, caps.RegionName); - } - catch (Exception e) - { - m_log.ErrorFormat("[{0}]: Environment settings has not been saved for region {1}, Exception: {2} - {3}", - Name, caps.RegionName, e.Message, e.StackTrace); + m_log.InfoFormat("[{0}]: New Environment settings has been saved from agentID {1} in region {2}", + Name, agentID, caps.RegionName); + } + catch (Exception e) + { + m_log.ErrorFormat("[{0}]: Environment settings has not been saved for region {1}, Exception: {2} - {3}", + Name, caps.RegionName, e.Message, e.StackTrace); - setResponse.success = false; - setResponse.fail_reason = String.Format("Environment Set for region {0} has failed, settings has not been saved.", caps.RegionName); + success = false; + fail_reason = String.Format("Environment Set for region {0} has failed, settings not saved.", caps.RegionName); + } } - return LLSDHelpers.SerialiseLLSDReply(setResponse); + StringBuilder sb = LLSDxmlEncode.Start(); + LLSDxmlEncode.AddMap(sb); + LLSDxmlEncode.AddElem("messageID", UUID.Zero, sb); + LLSDxmlEncode.AddElem("regionID", regionID, sb); + LLSDxmlEncode.AddElem("success", success, sb); + if(!success) + LLSDxmlEncode.AddElem("fail_reason", fail_reason, sb); + LLSDxmlEncode.AddEndMap(sb); + return LLSDxmlEncode.End(sb); } } }