From efae7c6fc27cc43134c531df9cb9b42e210fad5e Mon Sep 17 00:00:00 2001
From: Melanie
Date: Sun, 21 Oct 2012 21:12:34 +0100
Subject: Refactor: Move Dwell reply to a module that can be disabled. The
prior, hardcoded approach disabled the use of non-core dwell tracking
modules.
---
.../Resources/CoreModulePlugin.addin.xml | 1 +
.../Region/CoreModules/World/Land/DwellModule.cs | 110 +++++++++++++++++++++
.../CoreModules/World/Land/LandManagementModule.cs | 12 ---
3 files changed, 111 insertions(+), 12 deletions(-)
create mode 100644 OpenSim/Region/CoreModules/World/Land/DwellModule.cs
diff --git a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml
index 424e0ab..6c73d91 100644
--- a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml
+++ b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml
@@ -15,6 +15,7 @@
+
diff --git a/OpenSim/Region/CoreModules/World/Land/DwellModule.cs b/OpenSim/Region/CoreModules/World/Land/DwellModule.cs
new file mode 100644
index 0000000..d1f05a7
--- /dev/null
+++ b/OpenSim/Region/CoreModules/World/Land/DwellModule.cs
@@ -0,0 +1,110 @@
+/*
+ * 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.Diagnostics;
+using System.Reflection;
+using System.Text;
+using log4net;
+using Nini.Config;
+using OpenMetaverse;
+using OpenMetaverse.StructuredData;
+using OpenMetaverse.Messages.Linden;
+using OpenSim.Framework;
+using OpenSim.Framework.Capabilities;
+using OpenSim.Framework.Console;
+using OpenSim.Framework.Servers;
+using OpenSim.Framework.Servers.HttpServer;
+using OpenSim.Region.CoreModules.Framework.InterfaceCommander;
+using OpenSim.Region.Framework.Interfaces;
+using OpenSim.Region.Framework.Scenes;
+using OpenSim.Region.Physics.Manager;
+using OpenSim.Services.Interfaces;
+using Caps = OpenSim.Framework.Capabilities.Caps;
+using GridRegion = OpenSim.Services.Interfaces.GridRegion;
+
+namespace OpenSim.Region.CoreModules.World.Land
+{
+ public class DwellModule : IDwellModule, INonSharedRegionModule
+ {
+ private Scene m_scene;
+
+ public Type ReplaceableInterface
+ {
+ get { return typeof(IDwellModule); }
+ }
+
+ public string Name
+ {
+ get { return "DwellModule"; }
+ }
+
+ public void Initialise(IConfigSource source)
+ {
+ }
+
+ public void AddRegion(Scene scene)
+ {
+ m_scene = scene;
+
+ m_scene.EventManager.OnNewClient += OnNewClient;
+ }
+
+ public void RegionLoaded(Scene scene)
+ {
+ }
+
+ public void RemoveRegion(Scene scene)
+ {
+ }
+
+ public void Close()
+ {
+ }
+
+ public void OnNewClient(IClientAPI client)
+ {
+ client.OnParcelDwellRequest += ClientOnParcelDwellRequest;
+ }
+
+ private void ClientOnParcelDwellRequest(int localID, IClientAPI client)
+ {
+ ILandObject parcel = m_scene.LandChannel.GetLandObject(localID);
+ if (parcel == null)
+ return;
+
+ client.SendParcelDwellReply(localID, parcel.LandData.GlobalID, parcel.LandData.Dwell);
+ }
+
+ public int GetDwell(UUID parcelID)
+ {
+ return 0;
+ }
+ }
+}
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
index 1f8e823..e935462 100644
--- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
+++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
@@ -207,7 +207,6 @@ namespace OpenSim.Region.CoreModules.World.Land
client.OnParcelInfoRequest += ClientOnParcelInfoRequest;
client.OnParcelDeedToGroup += ClientOnParcelDeedToGroup;
client.OnPreAgentUpdate += ClientOnPreAgentUpdate;
- client.OnParcelDwellRequest += ClientOnParcelDwellRequest;
EntityBase presenceEntity;
if (m_scene.Entities.TryGetValue(client.AgentId, out presenceEntity) && presenceEntity is ScenePresence)
@@ -799,17 +798,6 @@ namespace OpenSim.Region.CoreModules.World.Land
}
}
- private void ClientOnParcelDwellRequest(int localID, IClientAPI client)
- {
- ILandObject parcel = null;
- lock (m_landList)
- {
- if (!m_landList.TryGetValue(localID, out parcel))
- return;
- }
- client.SendParcelDwellReply(localID, parcel.LandData.GlobalID, parcel.LandData.Dwell);
- }
-
#endregion
#region Parcel Modification
--
cgit v1.1