diff options
Diffstat (limited to 'OpenSim/Region/CoreModules/Asset')
5 files changed, 29 insertions, 29 deletions
diff --git a/OpenSim/Region/CoreModules/Asset/CenomeAssetCache.cs b/OpenSim/Region/CoreModules/Asset/CenomeAssetCache.cs index b1b7b27..e40caec 100644 --- a/OpenSim/Region/CoreModules/Asset/CenomeAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/CenomeAssetCache.cs | |||
@@ -28,6 +28,7 @@ | |||
28 | using System; | 28 | using System; |
29 | using System.Reflection; | 29 | using System.Reflection; |
30 | using log4net; | 30 | using log4net; |
31 | using Mono.Addins; | ||
31 | using Nini.Config; | 32 | using Nini.Config; |
32 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
33 | using OpenSim.Region.Framework.Interfaces; | 34 | using OpenSim.Region.Framework.Interfaces; |
@@ -89,6 +90,7 @@ namespace OpenSim.Region.CoreModules.Asset | |||
89 | /// ExpirationTime = 60 | 90 | /// ExpirationTime = 60 |
90 | /// </code> | 91 | /// </code> |
91 | /// </example> | 92 | /// </example> |
93 | [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "CenomeMemoryAssetCache")] | ||
92 | public class CenomeMemoryAssetCache : IImprovedAssetCache, ISharedRegionModule | 94 | public class CenomeMemoryAssetCache : IImprovedAssetCache, ISharedRegionModule |
93 | { | 95 | { |
94 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 96 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
diff --git a/OpenSim/Region/CoreModules/Asset/CoreAssetCache.cs b/OpenSim/Region/CoreModules/Asset/CoreAssetCache.cs index 7da5e7a..9742a5c 100644 --- a/OpenSim/Region/CoreModules/Asset/CoreAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/CoreAssetCache.cs | |||
@@ -30,6 +30,7 @@ using System; | |||
30 | using System.IO; | 30 | using System.IO; |
31 | using System.Collections.Generic; | 31 | using System.Collections.Generic; |
32 | using System.Reflection; | 32 | using System.Reflection; |
33 | using Mono.Addins; | ||
33 | using Nini.Config; | 34 | using Nini.Config; |
34 | using OpenSim.Framework; | 35 | using OpenSim.Framework; |
35 | using OpenSim.Region.Framework.Interfaces; | 36 | using OpenSim.Region.Framework.Interfaces; |
@@ -38,6 +39,7 @@ using OpenSim.Services.Interfaces; | |||
38 | 39 | ||
39 | namespace OpenSim.Region.CoreModules.Asset | 40 | namespace OpenSim.Region.CoreModules.Asset |
40 | { | 41 | { |
42 | [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "CoreAssetCache")] | ||
41 | public class CoreAssetCache : ISharedRegionModule, IImprovedAssetCache | 43 | public class CoreAssetCache : ISharedRegionModule, IImprovedAssetCache |
42 | { | 44 | { |
43 | private static readonly ILog m_log = | 45 | private static readonly ILog m_log = |
diff --git a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs index 7d7176f..b1bb56b 100644 --- a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs | |||
@@ -49,12 +49,12 @@ using OpenSim.Region.Framework.Scenes; | |||
49 | using OpenSim.Services.Interfaces; | 49 | using OpenSim.Services.Interfaces; |
50 | 50 | ||
51 | 51 | ||
52 | [assembly: Addin("FlotsamAssetCache", "1.1")] | 52 | //[assembly: Addin("FlotsamAssetCache", "1.1")] |
53 | [assembly: AddinDependency("OpenSim", "0.5")] | 53 | //[assembly: AddinDependency("OpenSim", "0.5")] |
54 | 54 | ||
55 | namespace Flotsam.RegionModules.AssetCache | 55 | namespace OpenSim.Region.CoreModules.Asset |
56 | { | 56 | { |
57 | [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")] | 57 | [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "FlotsamAssetCache")] |
58 | public class FlotsamAssetCache : ISharedRegionModule, IImprovedAssetCache, IAssetService | 58 | public class FlotsamAssetCache : ISharedRegionModule, IImprovedAssetCache, IAssetService |
59 | { | 59 | { |
60 | private static readonly ILog m_log = | 60 | private static readonly ILog m_log = |
@@ -107,8 +107,6 @@ namespace Flotsam.RegionModules.AssetCache | |||
107 | private IAssetService m_AssetService; | 107 | private IAssetService m_AssetService; |
108 | private List<Scene> m_Scenes = new List<Scene>(); | 108 | private List<Scene> m_Scenes = new List<Scene>(); |
109 | 109 | ||
110 | private bool m_DeepScanBeforePurge; | ||
111 | |||
112 | public FlotsamAssetCache() | 110 | public FlotsamAssetCache() |
113 | { | 111 | { |
114 | m_InvalidChars.AddRange(Path.GetInvalidPathChars()); | 112 | m_InvalidChars.AddRange(Path.GetInvalidPathChars()); |
@@ -170,8 +168,6 @@ namespace Flotsam.RegionModules.AssetCache | |||
170 | m_CacheDirectoryTierLen = assetConfig.GetInt("CacheDirectoryTierLength", m_CacheDirectoryTierLen); | 168 | m_CacheDirectoryTierLen = assetConfig.GetInt("CacheDirectoryTierLength", m_CacheDirectoryTierLen); |
171 | 169 | ||
172 | m_CacheWarnAt = assetConfig.GetInt("CacheWarnAt", m_CacheWarnAt); | 170 | m_CacheWarnAt = assetConfig.GetInt("CacheWarnAt", m_CacheWarnAt); |
173 | |||
174 | m_DeepScanBeforePurge = assetConfig.GetBoolean("DeepScanBeforePurge", m_DeepScanBeforePurge); | ||
175 | } | 171 | } |
176 | 172 | ||
177 | m_log.InfoFormat("[FLOTSAM ASSET CACHE]: Cache Directory {0}", m_CacheDirectory); | 173 | m_log.InfoFormat("[FLOTSAM ASSET CACHE]: Cache Directory {0}", m_CacheDirectory); |
@@ -226,10 +222,6 @@ namespace Flotsam.RegionModules.AssetCache | |||
226 | scene.RegisterModuleInterface<IImprovedAssetCache>(this); | 222 | scene.RegisterModuleInterface<IImprovedAssetCache>(this); |
227 | m_Scenes.Add(scene); | 223 | m_Scenes.Add(scene); |
228 | 224 | ||
229 | if (m_AssetService == null) | ||
230 | { | ||
231 | m_AssetService = scene.RequestModuleInterface<IAssetService>(); | ||
232 | } | ||
233 | } | 225 | } |
234 | } | 226 | } |
235 | 227 | ||
@@ -244,6 +236,8 @@ namespace Flotsam.RegionModules.AssetCache | |||
244 | 236 | ||
245 | public void RegionLoaded(Scene scene) | 237 | public void RegionLoaded(Scene scene) |
246 | { | 238 | { |
239 | if (m_Enabled && m_AssetService == null) | ||
240 | m_AssetService = scene.RequestModuleInterface<IAssetService>(); | ||
247 | } | 241 | } |
248 | 242 | ||
249 | //////////////////////////////////////////////////////////// | 243 | //////////////////////////////////////////////////////////// |
@@ -519,13 +513,10 @@ namespace Flotsam.RegionModules.AssetCache | |||
519 | // Purge all files last accessed prior to this point | 513 | // Purge all files last accessed prior to this point |
520 | DateTime purgeLine = DateTime.Now - m_FileExpiration; | 514 | DateTime purgeLine = DateTime.Now - m_FileExpiration; |
521 | 515 | ||
522 | // An optional deep scan at this point will ensure assets present in scenes, | 516 | // An asset cache may contain local non-temporary assets that are not in the asset service. Therefore, |
523 | // or referenced by objects in the scene, but not recently accessed | 517 | // before cleaning up expired files we must scan the objects in the scene to make sure that we retain |
524 | // are not purged. | 518 | // such local assets if they have not been recently accessed. |
525 | if (m_DeepScanBeforePurge) | 519 | TouchAllSceneAssets(false); |
526 | { | ||
527 | CacheScenes(); | ||
528 | } | ||
529 | 520 | ||
530 | foreach (string dir in Directory.GetDirectories(m_CacheDirectory)) | 521 | foreach (string dir in Directory.GetDirectories(m_CacheDirectory)) |
531 | { | 522 | { |
@@ -718,11 +709,14 @@ namespace Flotsam.RegionModules.AssetCache | |||
718 | 709 | ||
719 | /// <summary> | 710 | /// <summary> |
720 | /// Iterates through all Scenes, doing a deep scan through assets | 711 | /// Iterates through all Scenes, doing a deep scan through assets |
721 | /// to cache all assets present in the scene or referenced by assets | 712 | /// to update the access time of all assets present in the scene or referenced by assets |
722 | /// in the scene | 713 | /// in the scene. |
723 | /// </summary> | 714 | /// </summary> |
724 | /// <returns></returns> | 715 | /// <param name="storeUncached"> |
725 | private int CacheScenes() | 716 | /// If true, then assets scanned which are not found in cache are added to the cache. |
717 | /// </param> | ||
718 | /// <returns>Number of distinct asset references found in the scene.</returns> | ||
719 | private int TouchAllSceneAssets(bool storeUncached) | ||
726 | { | 720 | { |
727 | UuidGatherer gatherer = new UuidGatherer(m_AssetService); | 721 | UuidGatherer gatherer = new UuidGatherer(m_AssetService); |
728 | 722 | ||
@@ -745,7 +739,7 @@ namespace Flotsam.RegionModules.AssetCache | |||
745 | { | 739 | { |
746 | File.SetLastAccessTime(filename, DateTime.Now); | 740 | File.SetLastAccessTime(filename, DateTime.Now); |
747 | } | 741 | } |
748 | else | 742 | else if (storeUncached) |
749 | { | 743 | { |
750 | m_AssetService.Get(assetID.ToString()); | 744 | m_AssetService.Get(assetID.ToString()); |
751 | } | 745 | } |
@@ -873,13 +867,14 @@ namespace Flotsam.RegionModules.AssetCache | |||
873 | 867 | ||
874 | break; | 868 | break; |
875 | 869 | ||
876 | |||
877 | case "assets": | 870 | case "assets": |
878 | m_log.Info("[FLOTSAM ASSET CACHE]: Caching all assets, in all scenes."); | 871 | m_log.Info("[FLOTSAM ASSET CACHE]: Ensuring assets are cached for all scenes."); |
879 | 872 | ||
880 | Util.FireAndForget(delegate { | 873 | Util.FireAndForget(delegate { |
881 | int assetsCached = CacheScenes(); | 874 | int assetReferenceTotal = TouchAllSceneAssets(true); |
882 | m_log.InfoFormat("[FLOTSAM ASSET CACHE]: Completed Scene Caching, {0} assets found.", assetsCached); | 875 | m_log.InfoFormat( |
876 | "[FLOTSAM ASSET CACHE]: Completed check with {0} assets.", | ||
877 | assetReferenceTotal); | ||
883 | }); | 878 | }); |
884 | 879 | ||
885 | break; | 880 | break; |
diff --git a/OpenSim/Region/CoreModules/Asset/GlynnTuckerAssetCache.cs b/OpenSim/Region/CoreModules/Asset/GlynnTuckerAssetCache.cs index 1365e69..9592ca0 100644 --- a/OpenSim/Region/CoreModules/Asset/GlynnTuckerAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/GlynnTuckerAssetCache.cs | |||
@@ -31,6 +31,7 @@ using System.IO; | |||
31 | using System.Collections.Generic; | 31 | using System.Collections.Generic; |
32 | using System.Reflection; | 32 | using System.Reflection; |
33 | using GlynnTucker.Cache; | 33 | using GlynnTucker.Cache; |
34 | using Mono.Addins; | ||
34 | using Nini.Config; | 35 | using Nini.Config; |
35 | using OpenSim.Framework; | 36 | using OpenSim.Framework; |
36 | using OpenSim.Region.Framework.Interfaces; | 37 | using OpenSim.Region.Framework.Interfaces; |
@@ -39,6 +40,7 @@ using OpenSim.Services.Interfaces; | |||
39 | 40 | ||
40 | namespace OpenSim.Region.CoreModules.Asset | 41 | namespace OpenSim.Region.CoreModules.Asset |
41 | { | 42 | { |
43 | [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "GlynnTuckerAssetCache")] | ||
42 | public class GlynnTuckerAssetCache : ISharedRegionModule, IImprovedAssetCache | 44 | public class GlynnTuckerAssetCache : ISharedRegionModule, IImprovedAssetCache |
43 | { | 45 | { |
44 | private static readonly ILog m_log = | 46 | private static readonly ILog m_log = |
diff --git a/OpenSim/Region/CoreModules/Asset/Tests/FlotsamAssetCacheTests.cs b/OpenSim/Region/CoreModules/Asset/Tests/FlotsamAssetCacheTests.cs index c91b25f..1c2bfd0 100644 --- a/OpenSim/Region/CoreModules/Asset/Tests/FlotsamAssetCacheTests.cs +++ b/OpenSim/Region/CoreModules/Asset/Tests/FlotsamAssetCacheTests.cs | |||
@@ -35,7 +35,6 @@ using Nini.Config; | |||
35 | using NUnit.Framework; | 35 | using NUnit.Framework; |
36 | using OpenMetaverse; | 36 | using OpenMetaverse; |
37 | using OpenMetaverse.Assets; | 37 | using OpenMetaverse.Assets; |
38 | using Flotsam.RegionModules.AssetCache; | ||
39 | using OpenSim.Framework; | 38 | using OpenSim.Framework; |
40 | using OpenSim.Region.Framework.Scenes; | 39 | using OpenSim.Region.Framework.Scenes; |
41 | using OpenSim.Region.Framework.Scenes.Serialization; | 40 | using OpenSim.Region.Framework.Scenes.Serialization; |