Removed redundant asset fetches on HGAssetMapper. The UuidGatherer already downloads the assets, so we don't need to do it again...

connector_plugin
Diva Canto 2012-09-21 15:55:58 -07:00
parent f931c0a868
commit fb2ace6fff
1 changed files with 24 additions and 18 deletions

View File

@ -71,6 +71,21 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
#region Internal functions #region Internal functions
public AssetMetadata FetchMetadata(string url, UUID assetID)
{
if (!url.EndsWith("/") && !url.EndsWith("="))
url = url + "/";
AssetMetadata meta = m_scene.AssetService.GetMetadata(url + assetID.ToString());
if (meta != null)
m_log.DebugFormat("[HG ASSET MAPPER]: Fetched metadata for asset {0} of type {1} from {2} ", assetID, meta.Type, url);
else
m_log.DebugFormat("[HG ASSET MAPPER]: Unable to fetched metadata for asset {0} from {1} ", assetID, url);
return meta;
}
public AssetBase FetchAsset(string url, UUID assetID) public AssetBase FetchAsset(string url, UUID assetID)
{ {
if (!url.EndsWith("/") && !url.EndsWith("=")) if (!url.EndsWith("/") && !url.EndsWith("="))
@ -222,29 +237,20 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
public void Get(UUID assetID, UUID ownerID, string userAssetURL) public void Get(UUID assetID, UUID ownerID, string userAssetURL)
{ {
// Get the item from the remote asset server onto the local AssetCache // Get the item from the remote asset server onto the local AssetService
// and place an entry in m_assetMap
m_log.Debug("[HG ASSET MAPPER]: Fetching object " + assetID + " from asset server " + userAssetURL); AssetMetadata meta = FetchMetadata(userAssetURL, assetID);
AssetBase asset = FetchAsset(userAssetURL, assetID); if (meta == null)
return;
if (asset != null) // The act of gathering UUIDs downloads the assets from the remote server
{
// OK, now fetch the inside.
Dictionary<UUID, AssetType> ids = new Dictionary<UUID, AssetType>(); Dictionary<UUID, AssetType> ids = new Dictionary<UUID, AssetType>();
HGUuidGatherer uuidGatherer = new HGUuidGatherer(this, m_scene.AssetService, userAssetURL); HGUuidGatherer uuidGatherer = new HGUuidGatherer(this, m_scene.AssetService, userAssetURL);
uuidGatherer.GatherAssetUuids(asset.FullID, (AssetType)asset.Type, ids); uuidGatherer.GatherAssetUuids(assetID, (AssetType)meta.Type, ids);
if (ids.ContainsKey(assetID))
ids.Remove(assetID);
foreach (UUID uuid in ids.Keys)
FetchAsset(userAssetURL, uuid);
m_log.DebugFormat("[HG ASSET MAPPER]: Successfully fetched asset {0} from asset server {1}", asset.ID, userAssetURL); m_log.DebugFormat("[HG ASSET MAPPER]: Successfully fetched asset {0} from asset server {1}", assetID, userAssetURL);
} }
else
m_log.Warn("[HG ASSET MAPPER]: Could not fetch asset from remote asset server " + userAssetURL);
}
public void Post(UUID assetID, UUID ownerID, string userAssetURL) public void Post(UUID assetID, UUID ownerID, string userAssetURL)