* Report 'asset not found' situations back to UserTextureDownloadService

* This fixes some of the 'runaway downloads' problem but not all of it
* Also fix up logging messages so texture requests are reported as such rather than as assets
This commit is contained in:
Justin Clarke Casey
2008-02-20 17:34:10 +00:00
parent 96edcea3ae
commit 877713999c
6 changed files with 91 additions and 33 deletions

View File

@@ -95,7 +95,7 @@ namespace OpenSim.Region.Environment.Modules
new TextureSender(client, e.DiscardLevel, e.PacketNumber);
m_textureSenders.Add(e.RequestedAssetID, requestHandler);
m_scene.AssetCache.GetAsset(e.RequestedAssetID, TextureCallback);
m_scene.AssetCache.GetAsset(e.RequestedAssetID, TextureCallback, true);
}
}
}
@@ -117,7 +117,7 @@ namespace OpenSim.Region.Environment.Modules
/// </summary>
/// <param name="textureID"></param>
/// <param name="asset"></param>
public void TextureCallback(LLUUID textureID, AssetBase asset)
public void TextureCallback(LLUUID textureID, AssetBase texture)
{
lock (m_textureSenders)
{
@@ -125,10 +125,24 @@ namespace OpenSim.Region.Environment.Modules
if (m_textureSenders.TryGetValue(textureID, out textureSender))
{
if (!textureSender.ImageLoaded)
if (null != texture)
{
textureSender.TextureReceived(asset);
EnqueueTextureSender(textureSender);
if (!textureSender.ImageLoaded)
{
textureSender.TextureReceived(texture);
EnqueueTextureSender(textureSender);
}
}
else
{
// Right now, leaving it up to lower level asset server code to post the fact that
// this texture could not be found
// TODO Send packet back to the client telling it not to expect the texture
// The absence of this packet doesn't appear to be causing it a problem right now
//m_log.InfoFormat("Removing {0} from pending downloads count", textureID);
m_scene.AddPendingDownloads(-1);
}
//m_log.InfoFormat("[TEXTURE SENDER] Removing texture sender with uuid {0}", textureID);

View File

@@ -160,7 +160,7 @@ namespace OpenSim.Region.Environment.Scenes
cache.GetAsset(item.AssetID, delegate(LLUUID assetID, AssetBase asset)
{
if (asset.FullID == LLUUID.Zero)
if (null == asset)
{
m_log.ErrorFormat(
"[PRIMINVENTORY]: " +
@@ -174,7 +174,7 @@ namespace OpenSim.Region.Environment.Scenes
m_parentGroup.AddActiveScriptCount(1);
ScheduleFullUpdate();
}
});
}, false);
}
}

View File

@@ -363,9 +363,14 @@ namespace OpenSim.Region.Environment.Scenes
{
m_otherMS += ms;
}
// private static readonly log4net.ILog m_log
// = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public void addPendingDownload(int count)
{
m_pendingDownloads += count;
//m_log.InfoFormat("Adding {0} to pending downloads to make {1}", count, m_pendingDownloads);
}
public void addScriptLines(int count)