diff options
Heart surgery on asset service code bits. Affects OpenSim.ini configuration -- please see the example. Affects region servers only.
This may break a lot of things, but it needs to go in. It was tested in standalone and the UCI grid, but it needs a lot more testing.
Known problems:
* HG asset transfers are borked for now
* missing texture is missing
* 3 unit tests commented out for now
Diffstat (limited to 'OpenSim/Region/CoreModules/World/Archiver/AssetsRequest.cs')
-rw-r--r-- | OpenSim/Region/CoreModules/World/Archiver/AssetsRequest.cs | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/OpenSim/Region/CoreModules/World/Archiver/AssetsRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/AssetsRequest.cs index d806a9c..6cd52ab 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/AssetsRequest.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/AssetsRequest.cs | |||
@@ -33,6 +33,7 @@ using log4net; | |||
33 | using OpenMetaverse; | 33 | using OpenMetaverse; |
34 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
35 | using OpenSim.Framework.Serialization; | 35 | using OpenSim.Framework.Serialization; |
36 | using OpenSim.Services.Interfaces; | ||
36 | 37 | ||
37 | namespace OpenSim.Region.CoreModules.World.Archiver | 38 | namespace OpenSim.Region.CoreModules.World.Archiver |
38 | { | 39 | { |
@@ -71,13 +72,13 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
71 | /// <value> | 72 | /// <value> |
72 | /// Asset cache used to request the assets | 73 | /// Asset cache used to request the assets |
73 | /// </value> | 74 | /// </value> |
74 | protected IAssetCache m_assetCache; | 75 | protected IAssetService m_assetCache; |
75 | 76 | ||
76 | protected AssetsArchiver m_assetsArchiver; | 77 | protected AssetsArchiver m_assetsArchiver; |
77 | 78 | ||
78 | protected internal AssetsRequest( | 79 | protected internal AssetsRequest( |
79 | AssetsArchiver assetsArchiver, ICollection<UUID> uuids, | 80 | AssetsArchiver assetsArchiver, ICollection<UUID> uuids, |
80 | IAssetCache assetCache, AssetsRequestCallback assetsRequestCallback) | 81 | IAssetService assetCache, AssetsRequestCallback assetsRequestCallback) |
81 | { | 82 | { |
82 | m_assetsArchiver = assetsArchiver; | 83 | m_assetsArchiver = assetsArchiver; |
83 | m_uuids = uuids; | 84 | m_uuids = uuids; |
@@ -96,7 +97,15 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
96 | 97 | ||
97 | foreach (UUID uuid in m_uuids) | 98 | foreach (UUID uuid in m_uuids) |
98 | { | 99 | { |
99 | m_assetCache.GetAsset(uuid, AssetRequestCallback, true); | 100 | m_assetCache.Get(uuid.ToString(), this, AssetReceived); |
101 | } | ||
102 | } | ||
103 | |||
104 | protected void AssetReceived(string id, object sender, AssetBase asset) | ||
105 | { | ||
106 | if (asset != null) | ||
107 | { | ||
108 | AssetRequestCallback(asset.FullID, asset); | ||
100 | } | 109 | } |
101 | } | 110 | } |
102 | 111 | ||
@@ -110,10 +119,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
110 | //m_log.DebugFormat("[ARCHIVER]: Received callback for asset {0}", assetID); | 119 | //m_log.DebugFormat("[ARCHIVER]: Received callback for asset {0}", assetID); |
111 | 120 | ||
112 | if (asset != null) | 121 | if (asset != null) |
113 | { | 122 | { |
114 | // Make sure that we don't run out of memory by hogging assets in the cache | ||
115 | m_assetCache.ExpireAsset(assetID); | ||
116 | |||
117 | m_foundAssetUuids.Add(assetID); | 123 | m_foundAssetUuids.Add(assetID); |
118 | m_assetsArchiver.WriteAsset(asset); | 124 | m_assetsArchiver.WriteAsset(asset); |
119 | } | 125 | } |