diff options
Diffstat (limited to '')
3 files changed, 108 insertions, 19 deletions
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index 98ba8c3..514be4f 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs | |||
@@ -306,6 +306,9 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
306 | /// <returns>The parcel created.</returns> | 306 | /// <returns>The parcel created.</returns> |
307 | protected ILandObject CreateDefaultParcel() | 307 | protected ILandObject CreateDefaultParcel() |
308 | { | 308 | { |
309 | // m_log.DebugFormat( | ||
310 | // "[LAND MANAGEMENT MODULE]: Creating default parcel for region {0}", m_scene.RegionInfo.RegionName); | ||
311 | |||
309 | ILandObject fullSimParcel = new LandObject(UUID.Zero, false, m_scene); | 312 | ILandObject fullSimParcel = new LandObject(UUID.Zero, false, m_scene); |
310 | fullSimParcel.SetLandBitmap(fullSimParcel.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); | 313 | fullSimParcel.SetLandBitmap(fullSimParcel.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); |
311 | fullSimParcel.LandData.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner; | 314 | fullSimParcel.LandData.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner; |
@@ -579,7 +582,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
579 | } | 582 | } |
580 | else | 583 | else |
581 | { | 584 | { |
582 | m_log.WarnFormat("[LAND]: Invalid local land ID {0}", landLocalID); | 585 | m_log.WarnFormat("[LAND MANAGEMENT MODULE]: Invalid local land ID {0}", landLocalID); |
583 | } | 586 | } |
584 | } | 587 | } |
585 | 588 | ||
@@ -630,7 +633,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
630 | { | 633 | { |
631 | if (m_landIDList[x, y] == local_id) | 634 | if (m_landIDList[x, y] == local_id) |
632 | { | 635 | { |
633 | m_log.WarnFormat("[LAND]: Not removing land object {0}; still being used at {1}, {2}", | 636 | m_log.WarnFormat("[LAND MANAGEMENT MODULE]: Not removing land object {0}; still being used at {1}, {2}", |
634 | local_id, x, y); | 637 | local_id, x, y); |
635 | return; | 638 | return; |
636 | //throw new Exception("Could not remove land object. Still being used at " + x + ", " + y); | 639 | //throw new Exception("Could not remove land object. Still being used at " + x + ", " + y); |
@@ -1198,7 +1201,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1198 | } | 1201 | } |
1199 | else | 1202 | else |
1200 | { | 1203 | { |
1201 | m_log.WarnFormat("[PARCEL]: Invalid land object {0} passed for parcel object owner request", local_id); | 1204 | m_log.WarnFormat("[LAND MANAGEMENT MODULE]: Invalid land object {0} passed for parcel object owner request", local_id); |
1202 | } | 1205 | } |
1203 | } | 1206 | } |
1204 | 1207 | ||
@@ -1426,7 +1429,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1426 | { | 1429 | { |
1427 | IClientAPI client; | 1430 | IClientAPI client; |
1428 | if (! m_scene.TryGetClient(agentID, out client)) { | 1431 | if (! m_scene.TryGetClient(agentID, out client)) { |
1429 | m_log.WarnFormat("[LAND] unable to retrieve IClientAPI for {0}", agentID.ToString()); | 1432 | m_log.WarnFormat("[LAND MANAGEMENT MODULE]: Unable to retrieve IClientAPI for {0}", agentID); |
1430 | return LLSDHelpers.SerialiseLLSDReply(new LLSDEmpty()); | 1433 | return LLSDHelpers.SerialiseLLSDReply(new LLSDEmpty()); |
1431 | } | 1434 | } |
1432 | 1435 | ||
@@ -1475,7 +1478,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1475 | } | 1478 | } |
1476 | else | 1479 | else |
1477 | { | 1480 | { |
1478 | m_log.WarnFormat("[LAND] unable to find parcelID {0}", parcelID); | 1481 | m_log.WarnFormat("[LAND MANAGEMENT MODULE]: Unable to find parcelID {0}", parcelID); |
1479 | } | 1482 | } |
1480 | return LLSDHelpers.SerialiseLLSDReply(new LLSDEmpty()); | 1483 | return LLSDHelpers.SerialiseLLSDReply(new LLSDEmpty()); |
1481 | } | 1484 | } |
@@ -1533,17 +1536,17 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1533 | } | 1536 | } |
1534 | catch (LLSD.LLSDParseException e) | 1537 | catch (LLSD.LLSDParseException e) |
1535 | { | 1538 | { |
1536 | m_log.ErrorFormat("[LAND] Fetch error: {0}", e.Message); | 1539 | m_log.ErrorFormat("[LAND MANAGEMENT MODULE]: Fetch error: {0}", e.Message); |
1537 | m_log.ErrorFormat("[LAND] ... in request {0}", request); | 1540 | m_log.ErrorFormat("[LAND MANAGEMENT MODULE]: ... in request {0}", request); |
1538 | } | 1541 | } |
1539 | catch(InvalidCastException) | 1542 | catch (InvalidCastException) |
1540 | { | 1543 | { |
1541 | m_log.ErrorFormat("[LAND] Wrong type in request {0}", request); | 1544 | m_log.ErrorFormat("[LAND MANAGEMENT MODULE]: Wrong type in request {0}", request); |
1542 | } | 1545 | } |
1543 | 1546 | ||
1544 | LLSDRemoteParcelResponse response = new LLSDRemoteParcelResponse(); | 1547 | LLSDRemoteParcelResponse response = new LLSDRemoteParcelResponse(); |
1545 | response.parcel_id = parcelID; | 1548 | response.parcel_id = parcelID; |
1546 | m_log.DebugFormat("[LAND] got parcelID {0}", parcelID); | 1549 | m_log.DebugFormat("[LAND MANAGEMENT MODULE]: Got parcelID {0}", parcelID); |
1547 | 1550 | ||
1548 | return LLSDHelpers.SerialiseLLSDReply(response); | 1551 | return LLSDHelpers.SerialiseLLSDReply(response); |
1549 | } | 1552 | } |
@@ -1564,7 +1567,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1564 | ExtendedLandData extLandData = new ExtendedLandData(); | 1567 | ExtendedLandData extLandData = new ExtendedLandData(); |
1565 | Util.ParseFakeParcelID(parcel, out extLandData.RegionHandle, | 1568 | Util.ParseFakeParcelID(parcel, out extLandData.RegionHandle, |
1566 | out extLandData.X, out extLandData.Y); | 1569 | out extLandData.X, out extLandData.Y); |
1567 | m_log.DebugFormat("[LAND] got parcelinfo request for regionHandle {0}, x/y {1}/{2}", | 1570 | m_log.DebugFormat("[LAND MANAGEMENT MODULE]: Got parcelinfo request for regionHandle {0}, x/y {1}/{2}", |
1568 | extLandData.RegionHandle, extLandData.X, extLandData.Y); | 1571 | extLandData.RegionHandle, extLandData.X, extLandData.Y); |
1569 | 1572 | ||
1570 | // for this region or for somewhere else? | 1573 | // for this region or for somewhere else? |
@@ -1605,7 +1608,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1605 | info = m_scene.GridService.GetRegionByPosition(m_scene.RegionInfo.ScopeID, (int)x, (int)y); | 1608 | info = m_scene.GridService.GetRegionByPosition(m_scene.RegionInfo.ScopeID, (int)x, (int)y); |
1606 | } | 1609 | } |
1607 | // we need to transfer the fake parcelID, not the one in landData, so the viewer can match it to the landmark. | 1610 | // we need to transfer the fake parcelID, not the one in landData, so the viewer can match it to the landmark. |
1608 | m_log.DebugFormat("[LAND] got parcelinfo for parcel {0} in region {1}; sending...", | 1611 | m_log.DebugFormat("[LAND MANAGEMENT MODULE]: got parcelinfo for parcel {0} in region {1}; sending...", |
1609 | data.LandData.Name, data.RegionHandle); | 1612 | data.LandData.Name, data.RegionHandle); |
1610 | // HACK for now | 1613 | // HACK for now |
1611 | RegionInfo r = new RegionInfo(); | 1614 | RegionInfo r = new RegionInfo(); |
@@ -1616,7 +1619,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1616 | remoteClient.SendParcelInfo(r, data.LandData, parcelID, data.X, data.Y); | 1619 | remoteClient.SendParcelInfo(r, data.LandData, parcelID, data.X, data.Y); |
1617 | } | 1620 | } |
1618 | else | 1621 | else |
1619 | m_log.Debug("[LAND] got no parcelinfo; not sending"); | 1622 | m_log.Debug("[LAND MANAGEMENT MODULE]: got no parcelinfo; not sending"); |
1620 | } | 1623 | } |
1621 | 1624 | ||
1622 | public void setParcelOtherCleanTime(IClientAPI remoteClient, int localID, int otherCleanTime) | 1625 | public void setParcelOtherCleanTime(IClientAPI remoteClient, int localID, int otherCleanTime) |
diff --git a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs index 34ef67f..c71264c 100644 --- a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs | |||
@@ -51,8 +51,8 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
51 | 51 | ||
52 | public class PrimCountModule : IPrimCountModule, INonSharedRegionModule | 52 | public class PrimCountModule : IPrimCountModule, INonSharedRegionModule |
53 | { | 53 | { |
54 | private static readonly ILog m_log = | 54 | // private static readonly ILog m_log = |
55 | LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 55 | // LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
56 | 56 | ||
57 | private Scene m_Scene; | 57 | private Scene m_Scene; |
58 | private Dictionary<UUID, PrimCounts> m_PrimCounts = | 58 | private Dictionary<UUID, PrimCounts> m_PrimCounts = |
@@ -64,10 +64,16 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
64 | private Dictionary<UUID, ParcelCounts> m_ParcelCounts = | 64 | private Dictionary<UUID, ParcelCounts> m_ParcelCounts = |
65 | new Dictionary<UUID, ParcelCounts>(); | 65 | new Dictionary<UUID, ParcelCounts>(); |
66 | 66 | ||
67 | // For now, a simple simwide taint to get this up. Later parcel based | 67 | |
68 | // taint to allow recounting a parcel if only ownership has changed | 68 | /// <value> |
69 | // without recounting the whole sim. | 69 | /// For now, a simple simwide taint to get this up. Later parcel based |
70 | /// taint to allow recounting a parcel if only ownership has changed | ||
71 | /// without recounting the whole sim. | ||
72 | /// | ||
73 | /// We start out tainted so that the first get call resets the various prim counts. | ||
74 | /// <value> | ||
70 | private bool m_Tainted = true; | 75 | private bool m_Tainted = true; |
76 | |||
71 | private Object m_TaintLock = new Object(); | 77 | private Object m_TaintLock = new Object(); |
72 | 78 | ||
73 | public Type ReplaceableInterface | 79 | public Type ReplaceableInterface |
@@ -156,6 +162,8 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
156 | // NOTE: Call under Taint Lock | 162 | // NOTE: Call under Taint Lock |
157 | private void AddObject(SceneObjectGroup obj) | 163 | private void AddObject(SceneObjectGroup obj) |
158 | { | 164 | { |
165 | // m_log.DebugFormat("[PRIM COUNT MODULE]: Adding object {0} to prim count", obj.Name); | ||
166 | |||
159 | if (obj.IsAttachment) | 167 | if (obj.IsAttachment) |
160 | return; | 168 | return; |
161 | if (((obj.RootPart.Flags & PrimFlags.TemporaryOnRez) != 0)) | 169 | if (((obj.RootPart.Flags & PrimFlags.TemporaryOnRez) != 0)) |
@@ -299,18 +307,21 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
299 | // NOTE: This method MUST be called while holding the taint lock! | 307 | // NOTE: This method MUST be called while holding the taint lock! |
300 | private void Recount() | 308 | private void Recount() |
301 | { | 309 | { |
310 | // m_log.DebugFormat("[PRIM COUNT MODULE]: Recounting prims on {0}", m_Scene.RegionInfo.RegionName); | ||
311 | |||
302 | m_OwnerMap.Clear(); | 312 | m_OwnerMap.Clear(); |
303 | m_SimwideCounts.Clear(); | 313 | m_SimwideCounts.Clear(); |
304 | m_ParcelCounts.Clear(); | 314 | m_ParcelCounts.Clear(); |
305 | 315 | ||
306 | List<ILandObject> land = m_Scene.LandChannel.AllParcels(); | 316 | List<ILandObject> land = m_Scene.LandChannel.AllParcels(); |
307 | 317 | ||
308 | foreach (ILandObject l in land) | 318 | foreach (ILandObject l in land) |
309 | { | 319 | { |
310 | LandData landData = l.LandData; | 320 | LandData landData = l.LandData; |
311 | 321 | ||
312 | m_OwnerMap[landData.GlobalID] = landData.OwnerID; | 322 | m_OwnerMap[landData.GlobalID] = landData.OwnerID; |
313 | m_SimwideCounts[landData.OwnerID] = 0; | 323 | m_SimwideCounts[landData.OwnerID] = 0; |
324 | // m_log.DebugFormat("[PRIM COUNT MODULE]: Adding parcel count for {0}", landData.GlobalID); | ||
314 | m_ParcelCounts[landData.GlobalID] = new ParcelCounts(); | 325 | m_ParcelCounts[landData.GlobalID] = new ParcelCounts(); |
315 | } | 326 | } |
316 | 327 | ||
diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs new file mode 100644 index 0000000..402965f --- /dev/null +++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs | |||
@@ -0,0 +1,75 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Reflection; | ||
31 | using log4net.Config; | ||
32 | using NUnit.Framework; | ||
33 | using OpenMetaverse; | ||
34 | using OpenMetaverse.Assets; | ||
35 | using OpenSim.Framework; | ||
36 | using OpenSim.Region.Framework.Interfaces; | ||
37 | using OpenSim.Region.Framework.Scenes; | ||
38 | using OpenSim.Tests.Common; | ||
39 | using OpenSim.Tests.Common.Mock; | ||
40 | using OpenSim.Tests.Common.Setup; | ||
41 | |||
42 | namespace OpenSim.Region.CoreModules.World.Land.Tests | ||
43 | { | ||
44 | [TestFixture] | ||
45 | public class PrimCountModuleTests | ||
46 | { | ||
47 | [Test] | ||
48 | public void TestAddObject() | ||
49 | { | ||
50 | TestHelper.InMethod(); | ||
51 | // log4net.Config.XmlConfigurator.Configure(); | ||
52 | |||
53 | PrimCountModule pcm = new PrimCountModule(); | ||
54 | LandManagementModule lmm = new LandManagementModule(); | ||
55 | Scene scene = SceneSetupHelpers.SetupScene(); | ||
56 | SceneSetupHelpers.SetupSceneModules(scene, lmm, pcm); | ||
57 | |||
58 | ILandObject lo = new LandObject(UUID.Zero, false, scene); | ||
59 | lo.SetLandBitmap(lo.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); | ||
60 | lmm.AddLandObject(lo); | ||
61 | //scene.loadAllLandObjectsFromStorage(scene.RegionInfo.originRegionID); | ||
62 | |||
63 | string objName = "obj1"; | ||
64 | UUID objUuid = new UUID("00000000-0000-0000-0000-000000000001"); | ||
65 | |||
66 | SceneObjectPart part | ||
67 | = new SceneObjectPart(UUID.Zero, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) | ||
68 | { Name = objName, UUID = objUuid }; | ||
69 | |||
70 | scene.AddNewSceneObject(new SceneObjectGroup(part), false); | ||
71 | |||
72 | Assert.That(pcm.GetOwnerCount(lo.LandData.GlobalID), Is.EqualTo(1)); | ||
73 | } | ||
74 | } | ||
75 | } \ No newline at end of file | ||