diff options
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/CoreModules/Framework/InventoryAccess/HGUuidGatherer.cs | 4 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/UuidGatherer.cs | 93 |
2 files changed, 49 insertions, 48 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGUuidGatherer.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGUuidGatherer.cs index fcb544f..c7e1ef4 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGUuidGatherer.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGUuidGatherer.cs | |||
@@ -40,7 +40,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
40 | protected string m_assetServerURL; | 40 | protected string m_assetServerURL; |
41 | protected HGAssetMapper m_assetMapper; | 41 | protected HGAssetMapper m_assetMapper; |
42 | 42 | ||
43 | public HGUuidGatherer(HGAssetMapper assMap, IAssetService assetCache, string assetServerURL) : base(assetCache) | 43 | public HGUuidGatherer(HGAssetMapper assMap, IAssetService assetService, string assetServerURL) : base(assetService) |
44 | { | 44 | { |
45 | m_assetMapper = assMap; | 45 | m_assetMapper = assMap; |
46 | m_assetServerURL = assetServerURL; | 46 | m_assetServerURL = assetServerURL; |
@@ -49,7 +49,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
49 | protected override AssetBase GetAsset(UUID uuid) | 49 | protected override AssetBase GetAsset(UUID uuid) |
50 | { | 50 | { |
51 | if (string.Empty == m_assetServerURL) | 51 | if (string.Empty == m_assetServerURL) |
52 | return m_assetCache.Get(uuid.ToString()); | 52 | return base.GetAsset(uuid); |
53 | else | 53 | else |
54 | return m_assetMapper.FetchAsset(m_assetServerURL, uuid); | 54 | return m_assetMapper.FetchAsset(m_assetServerURL, uuid); |
55 | } | 55 | } |
diff --git a/OpenSim/Region/Framework/Scenes/UuidGatherer.cs b/OpenSim/Region/Framework/Scenes/UuidGatherer.cs index efb68a2..dc4a082 100644 --- a/OpenSim/Region/Framework/Scenes/UuidGatherer.cs +++ b/OpenSim/Region/Framework/Scenes/UuidGatherer.cs | |||
@@ -52,26 +52,23 @@ namespace OpenSim.Region.Framework.Scenes | |||
52 | public class UuidGatherer | 52 | public class UuidGatherer |
53 | { | 53 | { |
54 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 54 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
55 | |||
56 | /// <summary> | ||
57 | /// Asset cache used for gathering assets | ||
58 | /// </summary> | ||
59 | protected IAssetService m_assetCache; | ||
60 | |||
61 | /// <summary> | ||
62 | /// Used as a temporary store of an asset which represents an object. This can be a null if no appropriate | ||
63 | /// asset was found by the asset service. | ||
64 | /// </summary> | ||
65 | private AssetBase m_requestedObjectAsset; | ||
66 | 55 | ||
67 | /// <summary> | 56 | protected IAssetService m_assetService; |
68 | /// Signal whether we are currently waiting for the asset service to deliver an asset. | 57 | |
69 | /// </summary> | 58 | // /// <summary> |
70 | private bool m_waitingForObjectAsset; | 59 | // /// Used as a temporary store of an asset which represents an object. This can be a null if no appropriate |
60 | // /// asset was found by the asset service. | ||
61 | // /// </summary> | ||
62 | // private AssetBase m_requestedObjectAsset; | ||
63 | // | ||
64 | // /// <summary> | ||
65 | // /// Signal whether we are currently waiting for the asset service to deliver an asset. | ||
66 | // /// </summary> | ||
67 | // private bool m_waitingForObjectAsset; | ||
71 | 68 | ||
72 | public UuidGatherer(IAssetService assetCache) | 69 | public UuidGatherer(IAssetService assetCache) |
73 | { | 70 | { |
74 | m_assetCache = assetCache; | 71 | m_assetService = assetCache; |
75 | } | 72 | } |
76 | 73 | ||
77 | /// <summary> | 74 | /// <summary> |
@@ -195,18 +192,18 @@ namespace OpenSim.Region.Framework.Scenes | |||
195 | } | 192 | } |
196 | } | 193 | } |
197 | 194 | ||
198 | /// <summary> | 195 | // /// <summary> |
199 | /// The callback made when we request the asset for an object from the asset service. | 196 | // /// The callback made when we request the asset for an object from the asset service. |
200 | /// </summary> | 197 | // /// </summary> |
201 | private void AssetReceived(string id, Object sender, AssetBase asset) | 198 | // private void AssetReceived(string id, Object sender, AssetBase asset) |
202 | { | 199 | // { |
203 | lock (this) | 200 | // lock (this) |
204 | { | 201 | // { |
205 | m_requestedObjectAsset = asset; | 202 | // m_requestedObjectAsset = asset; |
206 | m_waitingForObjectAsset = false; | 203 | // m_waitingForObjectAsset = false; |
207 | Monitor.Pulse(this); | 204 | // Monitor.Pulse(this); |
208 | } | 205 | // } |
209 | } | 206 | // } |
210 | 207 | ||
211 | /// <summary> | 208 | /// <summary> |
212 | /// Get an asset synchronously, potentially using an asynchronous callback. If the | 209 | /// Get an asset synchronously, potentially using an asynchronous callback. If the |
@@ -216,25 +213,29 @@ namespace OpenSim.Region.Framework.Scenes | |||
216 | /// <returns></returns> | 213 | /// <returns></returns> |
217 | protected virtual AssetBase GetAsset(UUID uuid) | 214 | protected virtual AssetBase GetAsset(UUID uuid) |
218 | { | 215 | { |
219 | m_waitingForObjectAsset = true; | 216 | return m_assetService.Get(uuid.ToString()); |
220 | m_assetCache.Get(uuid.ToString(), this, AssetReceived); | ||
221 | |||
222 | // The asset cache callback can either | ||
223 | // | ||
224 | // 1. Complete on the same thread (if the asset is already in the cache) or | ||
225 | // 2. Come in via a different thread (if we need to go fetch it). | ||
226 | // | ||
227 | // The code below handles both these alternatives. | ||
228 | lock (this) | ||
229 | { | ||
230 | if (m_waitingForObjectAsset) | ||
231 | { | ||
232 | Monitor.Wait(this); | ||
233 | m_waitingForObjectAsset = false; | ||
234 | } | ||
235 | } | ||
236 | 217 | ||
237 | return m_requestedObjectAsset; | 218 | // XXX: Switching to do this synchronously where the call was async before but we always waited for it |
219 | // to complete anyway! | ||
220 | // m_waitingForObjectAsset = true; | ||
221 | // m_assetCache.Get(uuid.ToString(), this, AssetReceived); | ||
222 | // | ||
223 | // // The asset cache callback can either | ||
224 | // // | ||
225 | // // 1. Complete on the same thread (if the asset is already in the cache) or | ||
226 | // // 2. Come in via a different thread (if we need to go fetch it). | ||
227 | // // | ||
228 | // // The code below handles both these alternatives. | ||
229 | // lock (this) | ||
230 | // { | ||
231 | // if (m_waitingForObjectAsset) | ||
232 | // { | ||
233 | // Monitor.Wait(this); | ||
234 | // m_waitingForObjectAsset = false; | ||
235 | // } | ||
236 | // } | ||
237 | // | ||
238 | // return m_requestedObjectAsset; | ||
238 | } | 239 | } |
239 | 240 | ||
240 | /// <summary> | 241 | /// <summary> |