diff options
author | Melanie Thielker | 2009-05-10 12:27:05 +0000 |
---|---|---|
committer | Melanie Thielker | 2009-05-10 12:27:05 +0000 |
commit | d8e1842d2507b2c18b21671ed01496b3a2c59e18 (patch) | |
tree | 2ae57cf45dd1b22fe48b72b85c952258d87f60b6 | |
parent | Fix the build break (diff) | |
download | opensim-SC-d8e1842d2507b2c18b21671ed01496b3a2c59e18.zip opensim-SC-d8e1842d2507b2c18b21671ed01496b3a2c59e18.tar.gz opensim-SC-d8e1842d2507b2c18b21671ed01496b3a2c59e18.tar.bz2 opensim-SC-d8e1842d2507b2c18b21671ed01496b3a2c59e18.tar.xz |
Add some asset cache plumbing. Change the generic cache from UUID to string
keys to allow caching the new crop of URI identified objects.
-rw-r--r-- | OpenSim/Framework/Cache.cs | 46 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/Asset/CoreAssetCache.cs | 32 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs | 16 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/ServiceConnectors/Asset/LocalAssetServiceConnector.cs | 23 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/ServiceConnectors/Asset/RemoteAssetServiceConnector.cs | 19 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs | 4 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Interfaces/IImprovedAssetCache.cs (renamed from OpenSim/Region/Framework/Interfaces/IAssetCache.cs) | 6 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 6 |
8 files changed, 106 insertions, 46 deletions
diff --git a/OpenSim/Framework/Cache.cs b/OpenSim/Framework/Cache.cs index 3dab9b6..2d49146 100644 --- a/OpenSim/Framework/Cache.cs +++ b/OpenSim/Framework/Cache.cs | |||
@@ -33,8 +33,8 @@ namespace OpenSim.Framework | |||
33 | { | 33 | { |
34 | // The delegate we will use for performing fetch from backing store | 34 | // The delegate we will use for performing fetch from backing store |
35 | // | 35 | // |
36 | public delegate Object FetchDelegate(UUID index); | 36 | public delegate Object FetchDelegate(string index); |
37 | public delegate bool ExpireDelegate(UUID index); | 37 | public delegate bool ExpireDelegate(string index); |
38 | 38 | ||
39 | // Strategy | 39 | // Strategy |
40 | // | 40 | // |
@@ -64,14 +64,14 @@ namespace OpenSim.Framework | |||
64 | } | 64 | } |
65 | 65 | ||
66 | // The base class of all cache objects. Implements comparison and sorting | 66 | // The base class of all cache objects. Implements comparison and sorting |
67 | // by the UUID member. | 67 | // by the string member. |
68 | // | 68 | // |
69 | // This is not abstract because we need to instantiate it briefly as a | 69 | // This is not abstract because we need to instantiate it briefly as a |
70 | // method parameter | 70 | // method parameter |
71 | // | 71 | // |
72 | public class CacheItemBase : IEquatable<CacheItemBase>, IComparable<CacheItemBase> | 72 | public class CacheItemBase : IEquatable<CacheItemBase>, IComparable<CacheItemBase> |
73 | { | 73 | { |
74 | public UUID uuid; | 74 | public string uuid; |
75 | public DateTime entered; | 75 | public DateTime entered; |
76 | public DateTime lastUsed; | 76 | public DateTime lastUsed; |
77 | public DateTime expires = new DateTime(0); | 77 | public DateTime expires = new DateTime(0); |
@@ -86,14 +86,14 @@ namespace OpenSim.Framework | |||
86 | { | 86 | { |
87 | } | 87 | } |
88 | 88 | ||
89 | public CacheItemBase(UUID index) | 89 | public CacheItemBase(string index) |
90 | { | 90 | { |
91 | uuid = index; | 91 | uuid = index; |
92 | entered = DateTime.Now; | 92 | entered = DateTime.Now; |
93 | lastUsed = entered; | 93 | lastUsed = entered; |
94 | } | 94 | } |
95 | 95 | ||
96 | public CacheItemBase(UUID index, DateTime ttl) | 96 | public CacheItemBase(string index, DateTime ttl) |
97 | { | 97 | { |
98 | uuid = index; | 98 | uuid = index; |
99 | entered = DateTime.Now; | 99 | entered = DateTime.Now; |
@@ -123,23 +123,23 @@ namespace OpenSim.Framework | |||
123 | { | 123 | { |
124 | private Object m_Data; | 124 | private Object m_Data; |
125 | 125 | ||
126 | public MemoryCacheItem(UUID index) : | 126 | public MemoryCacheItem(string index) : |
127 | base(index) | 127 | base(index) |
128 | { | 128 | { |
129 | } | 129 | } |
130 | 130 | ||
131 | public MemoryCacheItem(UUID index, DateTime ttl) : | 131 | public MemoryCacheItem(string index, DateTime ttl) : |
132 | base(index, ttl) | 132 | base(index, ttl) |
133 | { | 133 | { |
134 | } | 134 | } |
135 | 135 | ||
136 | public MemoryCacheItem(UUID index, Object data) : | 136 | public MemoryCacheItem(string index, Object data) : |
137 | base(index) | 137 | base(index) |
138 | { | 138 | { |
139 | Store(data); | 139 | Store(data); |
140 | } | 140 | } |
141 | 141 | ||
142 | public MemoryCacheItem(UUID index, DateTime ttl, Object data) : | 142 | public MemoryCacheItem(string index, DateTime ttl, Object data) : |
143 | base(index, ttl) | 143 | base(index, ttl) |
144 | { | 144 | { |
145 | Store(data); | 145 | Store(data); |
@@ -160,23 +160,23 @@ namespace OpenSim.Framework | |||
160 | // | 160 | // |
161 | public class FileCacheItem : CacheItemBase | 161 | public class FileCacheItem : CacheItemBase |
162 | { | 162 | { |
163 | public FileCacheItem(UUID index) : | 163 | public FileCacheItem(string index) : |
164 | base(index) | 164 | base(index) |
165 | { | 165 | { |
166 | } | 166 | } |
167 | 167 | ||
168 | public FileCacheItem(UUID index, DateTime ttl) : | 168 | public FileCacheItem(string index, DateTime ttl) : |
169 | base(index, ttl) | 169 | base(index, ttl) |
170 | { | 170 | { |
171 | } | 171 | } |
172 | 172 | ||
173 | public FileCacheItem(UUID index, Object data) : | 173 | public FileCacheItem(string index, Object data) : |
174 | base(index) | 174 | base(index) |
175 | { | 175 | { |
176 | Store(data); | 176 | Store(data); |
177 | } | 177 | } |
178 | 178 | ||
179 | public FileCacheItem(UUID index, DateTime ttl, Object data) : | 179 | public FileCacheItem(string index, DateTime ttl, Object data) : |
180 | base(index, ttl) | 180 | base(index, ttl) |
181 | { | 181 | { |
182 | Store(data); | 182 | Store(data); |
@@ -200,8 +200,8 @@ namespace OpenSim.Framework | |||
200 | public class Cache | 200 | public class Cache |
201 | { | 201 | { |
202 | private List<CacheItemBase> m_Index = new List<CacheItemBase>(); | 202 | private List<CacheItemBase> m_Index = new List<CacheItemBase>(); |
203 | private Dictionary<UUID, CacheItemBase> m_Lookup = | 203 | private Dictionary<string, CacheItemBase> m_Lookup = |
204 | new Dictionary<UUID, CacheItemBase>(); | 204 | new Dictionary<string, CacheItemBase>(); |
205 | 205 | ||
206 | private CacheStrategy m_Strategy; | 206 | private CacheStrategy m_Strategy; |
207 | private CacheMedium m_Medium; | 207 | private CacheMedium m_Medium; |
@@ -312,7 +312,7 @@ namespace OpenSim.Framework | |||
312 | 312 | ||
313 | // Get an item from cache. Return the raw item, not it's data | 313 | // Get an item from cache. Return the raw item, not it's data |
314 | // | 314 | // |
315 | protected virtual CacheItemBase GetItem(UUID index) | 315 | protected virtual CacheItemBase GetItem(string index) |
316 | { | 316 | { |
317 | CacheItemBase item = null; | 317 | CacheItemBase item = null; |
318 | 318 | ||
@@ -339,7 +339,7 @@ namespace OpenSim.Framework | |||
339 | // Get an item from cache. Do not try to fetch from source if not | 339 | // Get an item from cache. Do not try to fetch from source if not |
340 | // present. Just return null | 340 | // present. Just return null |
341 | // | 341 | // |
342 | public virtual Object Get(UUID index) | 342 | public virtual Object Get(string index) |
343 | { | 343 | { |
344 | CacheItemBase item = GetItem(index); | 344 | CacheItemBase item = GetItem(index); |
345 | 345 | ||
@@ -352,7 +352,7 @@ namespace OpenSim.Framework | |||
352 | // Fetch an object from backing store if not cached, serve from | 352 | // Fetch an object from backing store if not cached, serve from |
353 | // cache if it is. | 353 | // cache if it is. |
354 | // | 354 | // |
355 | public virtual Object Get(UUID index, FetchDelegate fetch) | 355 | public virtual Object Get(string index, FetchDelegate fetch) |
356 | { | 356 | { |
357 | Object item = Get(index); | 357 | Object item = Get(index); |
358 | if (item != null) | 358 | if (item != null) |
@@ -393,7 +393,7 @@ namespace OpenSim.Framework | |||
393 | return item.Retrieve(); | 393 | return item.Retrieve(); |
394 | } | 394 | } |
395 | 395 | ||
396 | public virtual void Store(UUID index, Object data) | 396 | public virtual void Store(string index, Object data) |
397 | { | 397 | { |
398 | Type container; | 398 | Type container; |
399 | 399 | ||
@@ -411,12 +411,12 @@ namespace OpenSim.Framework | |||
411 | Store(index, data, container); | 411 | Store(index, data, container); |
412 | } | 412 | } |
413 | 413 | ||
414 | public virtual void Store(UUID index, Object data, Type container) | 414 | public virtual void Store(string index, Object data, Type container) |
415 | { | 415 | { |
416 | Store(index, data, container, new Object[] { index }); | 416 | Store(index, data, container, new Object[] { index }); |
417 | } | 417 | } |
418 | 418 | ||
419 | public virtual void Store(UUID index, Object data, Type container, | 419 | public virtual void Store(string index, Object data, Type container, |
420 | Object[] parameters) | 420 | Object[] parameters) |
421 | { | 421 | { |
422 | Expire(false); | 422 | Expire(false); |
@@ -520,7 +520,7 @@ namespace OpenSim.Framework | |||
520 | } | 520 | } |
521 | } | 521 | } |
522 | 522 | ||
523 | public void Invalidate(UUID uuid) | 523 | public void Invalidate(string uuid) |
524 | { | 524 | { |
525 | if (!m_Lookup.ContainsKey(uuid)) | 525 | if (!m_Lookup.ContainsKey(uuid)) |
526 | return; | 526 | return; |
diff --git a/OpenSim/Region/CoreModules/Asset/CoreAssetCache.cs b/OpenSim/Region/CoreModules/Asset/CoreAssetCache.cs index 957b04f..c4cc007 100644 --- a/OpenSim/Region/CoreModules/Asset/CoreAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/CoreAssetCache.cs | |||
@@ -45,8 +45,6 @@ namespace OpenSim.Region.CoreModules.Asset | |||
45 | MethodBase.GetCurrentMethod().DeclaringType); | 45 | MethodBase.GetCurrentMethod().DeclaringType); |
46 | 46 | ||
47 | private bool m_Enabled = false; | 47 | private bool m_Enabled = false; |
48 | private Dictionary<Scene, IAssetService> m_AssetService = | ||
49 | new Dictionary<Scene, IAssetService>(); | ||
50 | 48 | ||
51 | public string Name | 49 | public string Name |
52 | { | 50 | { |
@@ -85,10 +83,6 @@ namespace OpenSim.Region.CoreModules.Asset | |||
85 | 83 | ||
86 | public void AddRegion(Scene scene) | 84 | public void AddRegion(Scene scene) |
87 | { | 85 | { |
88 | if (!m_Enabled) | ||
89 | return; | ||
90 | |||
91 | scene.RegisterModuleInterface<IImprovedAssetCache>(this); | ||
92 | } | 86 | } |
93 | 87 | ||
94 | public void RemoveRegion(Scene scene) | 88 | public void RemoveRegion(Scene scene) |
@@ -97,15 +91,27 @@ namespace OpenSim.Region.CoreModules.Asset | |||
97 | 91 | ||
98 | public void RegionLoaded(Scene scene) | 92 | public void RegionLoaded(Scene scene) |
99 | { | 93 | { |
100 | if (!m_Enabled) | 94 | } |
101 | return; | 95 | |
96 | //////////////////////////////////////////////////////////// | ||
97 | // IImprovedAssetCache | ||
98 | // | ||
99 | |||
100 | public void Cache(AssetBase asset) | ||
101 | { | ||
102 | } | ||
103 | |||
104 | public AssetBase Get(string id) | ||
105 | { | ||
106 | return null; | ||
107 | } | ||
102 | 108 | ||
103 | m_AssetService[scene] = | 109 | public void Expire(string id) |
104 | scene.RequestModuleInterface<IAssetService>(); | 110 | { |
111 | } | ||
105 | 112 | ||
106 | if (m_AssetService[scene] != null) | 113 | public void Clear() |
107 | m_log.InfoFormat("[ASSET CACHE]: Enabled for region {0}", | 114 | { |
108 | scene.RegionInfo.RegionName); | ||
109 | } | 115 | } |
110 | } | 116 | } |
111 | } | 117 | } |
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs index 246cf55..e46545c 100644 --- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs | |||
@@ -624,8 +624,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
624 | // a new friend was added in the initiator's and friend's data, so the cache entries are wrong now. | 624 | // a new friend was added in the initiator's and friend's data, so the cache entries are wrong now. |
625 | lock (m_friendLists) | 625 | lock (m_friendLists) |
626 | { | 626 | { |
627 | m_friendLists.Invalidate(fromAgentID); | 627 | m_friendLists.Invalidate(fromAgentID.ToString()); |
628 | m_friendLists.Invalidate(toAgentID); | 628 | m_friendLists.Invalidate(toAgentID.ToString()); |
629 | } | 629 | } |
630 | 630 | ||
631 | // now send presence update and add a calling card for the new friend | 631 | // now send presence update and add a calling card for the new friend |
@@ -664,8 +664,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
664 | // The cache entries aren't valid anymore either, as we just added a friend to both sides. | 664 | // The cache entries aren't valid anymore either, as we just added a friend to both sides. |
665 | lock (m_friendLists) | 665 | lock (m_friendLists) |
666 | { | 666 | { |
667 | m_friendLists.Invalidate(agentID); | 667 | m_friendLists.Invalidate(agentID.ToString()); |
668 | m_friendLists.Invalidate(friendID); | 668 | m_friendLists.Invalidate(friendID.ToString()); |
669 | } | 669 | } |
670 | 670 | ||
671 | // if it's a local friend, we don't have to do the lookup | 671 | // if it's a local friend, we don't have to do the lookup |
@@ -782,8 +782,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
782 | // clean up cache: FriendList is wrong now... | 782 | // clean up cache: FriendList is wrong now... |
783 | lock (m_friendLists) | 783 | lock (m_friendLists) |
784 | { | 784 | { |
785 | m_friendLists.Invalidate(agentID); | 785 | m_friendLists.Invalidate(agentID.ToString()); |
786 | m_friendLists.Invalidate(exfriendID); | 786 | m_friendLists.Invalidate(exfriendID.ToString()); |
787 | } | 787 | } |
788 | } | 788 | } |
789 | 789 | ||
@@ -1070,7 +1070,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
1070 | List<FriendListItem> fl; | 1070 | List<FriendListItem> fl; |
1071 | lock (m_friendLists) | 1071 | lock (m_friendLists) |
1072 | { | 1072 | { |
1073 | fl = (List<FriendListItem>)m_friendLists.Get(agent.ControllingClient.AgentId, | 1073 | fl = (List<FriendListItem>)m_friendLists.Get(agent.ControllingClient.AgentId.ToString(), |
1074 | m_initialScene.GetFriendList); | 1074 | m_initialScene.GetFriendList); |
1075 | } | 1075 | } |
1076 | 1076 | ||
@@ -1083,7 +1083,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
1083 | List<FriendListItem> fl; | 1083 | List<FriendListItem> fl; |
1084 | lock (m_friendLists) | 1084 | lock (m_friendLists) |
1085 | { | 1085 | { |
1086 | fl = (List<FriendListItem>)m_friendLists.Get(remoteClient.AgentId, | 1086 | fl = (List<FriendListItem>)m_friendLists.Get(remoteClient.AgentId.ToString(), |
1087 | m_initialScene.GetFriendList); | 1087 | m_initialScene.GetFriendList); |
1088 | } | 1088 | } |
1089 | 1089 | ||
diff --git a/OpenSim/Region/CoreModules/ServiceConnectors/Asset/LocalAssetServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectors/Asset/LocalAssetServiceConnector.cs index 24ac8be..0a0f634 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectors/Asset/LocalAssetServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectors/Asset/LocalAssetServiceConnector.cs | |||
@@ -28,6 +28,7 @@ | |||
28 | using log4net; | 28 | using log4net; |
29 | using Nini.Config; | 29 | using Nini.Config; |
30 | using System; | 30 | using System; |
31 | using System.Collections.Generic; | ||
31 | using System.Reflection; | 32 | using System.Reflection; |
32 | using OpenSim.Servers.Base; | 33 | using OpenSim.Servers.Base; |
33 | using OpenSim.Region.Framework.Interfaces; | 34 | using OpenSim.Region.Framework.Interfaces; |
@@ -42,6 +43,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Asset | |||
42 | LogManager.GetLogger( | 43 | LogManager.GetLogger( |
43 | MethodBase.GetCurrentMethod().DeclaringType); | 44 | MethodBase.GetCurrentMethod().DeclaringType); |
44 | 45 | ||
46 | private Dictionary<Scene, IImprovedAssetCache> m_AssetCache = | ||
47 | new Dictionary<Scene, IImprovedAssetCache>(); | ||
48 | |||
45 | private IAssetService m_AssetService; | 49 | private IAssetService m_AssetService; |
46 | 50 | ||
47 | private bool m_Enabled = false; | 51 | private bool m_Enabled = false; |
@@ -109,10 +113,29 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Asset | |||
109 | 113 | ||
110 | public void RemoveRegion(Scene scene) | 114 | public void RemoveRegion(Scene scene) |
111 | { | 115 | { |
116 | if (!m_Enabled) | ||
117 | return; | ||
118 | |||
119 | m_AssetCache.Remove(scene); | ||
112 | } | 120 | } |
113 | 121 | ||
114 | public void RegionLoaded(Scene scene) | 122 | public void RegionLoaded(Scene scene) |
115 | { | 123 | { |
124 | if (!m_Enabled) | ||
125 | return; | ||
126 | |||
127 | m_AssetCache[scene] = | ||
128 | scene.RequestModuleInterface<IImprovedAssetCache>(); | ||
129 | |||
130 | m_log.InfoFormat("[ASSET CONNECTOR]: Enabled local assets for region {0}", scene.RegionInfo.RegionName); | ||
131 | |||
132 | m_AssetCache[scene] = | ||
133 | scene.RequestModuleInterface<IImprovedAssetCache>(); | ||
134 | |||
135 | if (m_AssetCache[scene] != null) | ||
136 | { | ||
137 | m_log.InfoFormat("[ASSET CONNECTOR]: Enabled asset caching for region {0}", scene.RegionInfo.RegionName); | ||
138 | } | ||
116 | } | 139 | } |
117 | } | 140 | } |
118 | } | 141 | } |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectors/Asset/RemoteAssetServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectors/Asset/RemoteAssetServiceConnector.cs index 2cc2962..835678d 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectors/Asset/RemoteAssetServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectors/Asset/RemoteAssetServiceConnector.cs | |||
@@ -27,6 +27,7 @@ | |||
27 | 27 | ||
28 | using log4net; | 28 | using log4net; |
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | ||
30 | using System.IO; | 31 | using System.IO; |
31 | using System.Reflection; | 32 | using System.Reflection; |
32 | using Nini.Config; | 33 | using Nini.Config; |
@@ -48,6 +49,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Asset | |||
48 | 49 | ||
49 | private bool m_Enabled = false; | 50 | private bool m_Enabled = false; |
50 | private string m_ServerURI = String.Empty; | 51 | private string m_ServerURI = String.Empty; |
52 | private Dictionary<Scene, IImprovedAssetCache> m_AssetCache = | ||
53 | new Dictionary<Scene, IImprovedAssetCache>(); | ||
51 | 54 | ||
52 | public string Name | 55 | public string Name |
53 | { | 56 | { |
@@ -103,10 +106,26 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Asset | |||
103 | 106 | ||
104 | public void RemoveRegion(Scene scene) | 107 | public void RemoveRegion(Scene scene) |
105 | { | 108 | { |
109 | if (!m_Enabled) | ||
110 | return; | ||
111 | |||
112 | m_AssetCache.Remove(scene); | ||
106 | } | 113 | } |
107 | 114 | ||
108 | public void RegionLoaded(Scene scene) | 115 | public void RegionLoaded(Scene scene) |
109 | { | 116 | { |
117 | if (!m_Enabled) | ||
118 | return; | ||
119 | |||
120 | m_AssetCache[scene] = | ||
121 | scene.RequestModuleInterface<IImprovedAssetCache>(); | ||
122 | |||
123 | m_log.InfoFormat("[ASSET CONNECTOR]: Enabled remote assets for region {0}", scene.RegionInfo.RegionName); | ||
124 | |||
125 | if (m_AssetCache[scene] != null) | ||
126 | { | ||
127 | m_log.InfoFormat("[ASSET CONNECTOR]: Enabled asset caching for region {0}", scene.RegionInfo.RegionName); | ||
128 | } | ||
110 | } | 129 | } |
111 | 130 | ||
112 | public AssetBase Get(string id) | 131 | public AssetBase Get(string id) |
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index ce54261..1dc33e1 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs | |||
@@ -1302,7 +1302,9 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1302 | if (parcelID == UUID.Zero) | 1302 | if (parcelID == UUID.Zero) |
1303 | return; | 1303 | return; |
1304 | 1304 | ||
1305 | ExtendedLandData data = (ExtendedLandData)parcelInfoCache.Get(parcelID, delegate(UUID parcel) { | 1305 | ExtendedLandData data = (ExtendedLandData)parcelInfoCache.Get(parcelID.ToString(), delegate(string id) { |
1306 | UUID parcel = UUID.Zero; | ||
1307 | UUID.TryParse(id, out parcel); | ||
1306 | // assume we've got the parcelID we just computed in RemoteParcelRequest | 1308 | // assume we've got the parcelID we just computed in RemoteParcelRequest |
1307 | ExtendedLandData extLandData = new ExtendedLandData(); | 1309 | ExtendedLandData extLandData = new ExtendedLandData(); |
1308 | Util.ParseFakeParcelID(parcel, out extLandData.regionHandle, out extLandData.x, out extLandData.y); | 1310 | Util.ParseFakeParcelID(parcel, out extLandData.regionHandle, out extLandData.x, out extLandData.y); |
diff --git a/OpenSim/Region/Framework/Interfaces/IAssetCache.cs b/OpenSim/Region/Framework/Interfaces/IImprovedAssetCache.cs index bd43ce5..b213284 100644 --- a/OpenSim/Region/Framework/Interfaces/IAssetCache.cs +++ b/OpenSim/Region/Framework/Interfaces/IImprovedAssetCache.cs | |||
@@ -25,9 +25,15 @@ | |||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | */ | 26 | */ |
27 | 27 | ||
28 | using OpenSim.Framework; | ||
29 | |||
28 | namespace OpenSim.Region.Framework.Interfaces | 30 | namespace OpenSim.Region.Framework.Interfaces |
29 | { | 31 | { |
30 | public interface IImprovedAssetCache | 32 | public interface IImprovedAssetCache |
31 | { | 33 | { |
34 | void Cache(AssetBase asset); | ||
35 | AssetBase Get(string id); | ||
36 | void Expire(string id); | ||
37 | void Clear(); | ||
32 | } | 38 | } |
33 | } | 39 | } |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index d1260d4..7cb66a0 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -2825,8 +2825,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
2825 | objectCapacity = objects; | 2825 | objectCapacity = objects; |
2826 | } | 2826 | } |
2827 | 2827 | ||
2828 | public List<FriendListItem> GetFriendList(UUID avatarID) | 2828 | public List<FriendListItem> GetFriendList(string id) |
2829 | { | 2829 | { |
2830 | UUID avatarID; | ||
2831 | if (!UUID.TryParse(id, out avatarID)) | ||
2832 | return new List<FriendListItem>(); | ||
2833 | |||
2830 | return CommsManager.GetUserFriendList(avatarID); | 2834 | return CommsManager.GetUserFriendList(avatarID); |
2831 | } | 2835 | } |
2832 | 2836 | ||