mirror of
https://github.com/opensim/opensim.git
synced 2026-08-05 00:46:02 +08:00
Refactor asset handling as per Ubit's suggestion
This commit is contained in:
@@ -369,8 +369,8 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender
|
||||
else if (Cache != null)
|
||||
{
|
||||
string assetName = "j2kCache_" + AssetId.ToString();
|
||||
bool negative;
|
||||
AssetBase layerDecodeAsset = Cache.Get(assetName, out negative);
|
||||
AssetBase layerDecodeAsset;
|
||||
Cache.Get(assetName, out layerDecodeAsset);
|
||||
|
||||
if (layerDecodeAsset != null)
|
||||
{
|
||||
|
||||
@@ -260,12 +260,9 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||
/// Cache doesn't guarantee in any situation that asset is stored to it.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
public AssetBase Get(string id, out bool negative)
|
||||
public bool Get(string id, out AssetBase assetBase)
|
||||
{
|
||||
negative = false;
|
||||
|
||||
m_getCount++;
|
||||
AssetBase assetBase;
|
||||
if (m_cache.TryGetValue(id, out assetBase))
|
||||
m_hitCount++;
|
||||
|
||||
@@ -286,7 +283,7 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||
// if (null == assetBase)
|
||||
// m_log.DebugFormat("[CENOME ASSET CACHE]: Asset {0} not in cache", id);
|
||||
|
||||
return assetBase;
|
||||
return true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -115,8 +115,10 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||
public bool Check(string id)
|
||||
{
|
||||
// XXX This is probably not an efficient implementation.
|
||||
bool negative;
|
||||
return Get(id, out negative) != null;
|
||||
AssetBase asset;
|
||||
if (!Get(id, out asset))
|
||||
return false;
|
||||
return asset != null;
|
||||
}
|
||||
|
||||
public void Cache(AssetBase asset)
|
||||
@@ -130,10 +132,10 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||
// We don't do negative caching
|
||||
}
|
||||
|
||||
public AssetBase Get(string id, out bool negative)
|
||||
public bool Get(string id, out AssetBase asset)
|
||||
{
|
||||
negative = false;
|
||||
return (AssetBase)m_Cache.Get(id);
|
||||
asset = (AssetBase)m_Cache.Get(id);
|
||||
return true;
|
||||
}
|
||||
|
||||
public void Expire(string id)
|
||||
|
||||
@@ -536,24 +536,23 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||
// For IAssetService
|
||||
public AssetBase Get(string id)
|
||||
{
|
||||
bool negative;
|
||||
return Get(id, out negative);
|
||||
AssetBase asset;
|
||||
Get(id, out asset);
|
||||
return asset;
|
||||
}
|
||||
|
||||
public AssetBase Get(string id, out bool negative)
|
||||
public bool Get(string id, out AssetBase asset)
|
||||
{
|
||||
negative = false;
|
||||
asset = null;
|
||||
|
||||
m_Requests++;
|
||||
|
||||
object dummy;
|
||||
if (m_negativeCache.TryGetValue(id, out dummy))
|
||||
{
|
||||
negative = true;
|
||||
return null;
|
||||
return false;
|
||||
}
|
||||
|
||||
AssetBase asset = null;
|
||||
asset = GetFromWeakReference(id);
|
||||
if (asset != null && m_updateFileTimeOnCacheHit)
|
||||
{
|
||||
@@ -592,7 +591,7 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||
GenerateCacheHitReport().ForEach(l => m_log.InfoFormat("[FLOTSAM ASSET CACHE]: {0}", l));
|
||||
}
|
||||
|
||||
return asset;
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool Check(string id)
|
||||
@@ -607,8 +606,9 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||
|
||||
public AssetBase GetCached(string id)
|
||||
{
|
||||
bool negative;
|
||||
return Get(id, out negative);
|
||||
AssetBase asset;
|
||||
Get(id, out asset);
|
||||
return asset;
|
||||
}
|
||||
|
||||
public void Expire(string id)
|
||||
@@ -1236,23 +1236,22 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||
|
||||
public AssetMetadata GetMetadata(string id)
|
||||
{
|
||||
bool negative;
|
||||
AssetBase asset = Get(id, out negative);
|
||||
AssetBase asset;
|
||||
Get(id, out asset);
|
||||
return asset.Metadata;
|
||||
}
|
||||
|
||||
public byte[] GetData(string id)
|
||||
{
|
||||
bool negative;
|
||||
AssetBase asset = Get(id, out negative);
|
||||
AssetBase asset;
|
||||
Get(id, out asset);
|
||||
return asset.Data;
|
||||
}
|
||||
|
||||
public bool Get(string id, object sender, AssetRetrieved handler)
|
||||
{
|
||||
bool negative;
|
||||
AssetBase asset = Get(id, out negative);
|
||||
if (negative)
|
||||
AssetBase asset;
|
||||
if (!Get(id, out asset))
|
||||
return false;
|
||||
handler(id, sender, asset);
|
||||
return true;
|
||||
@@ -1284,8 +1283,9 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||
|
||||
public bool UpdateContent(string id, byte[] data)
|
||||
{
|
||||
bool negative;
|
||||
AssetBase asset = Get(id, out negative);
|
||||
AssetBase asset;
|
||||
if (!Get(id, out asset))
|
||||
return false;
|
||||
asset.Data = data;
|
||||
Cache(asset);
|
||||
return true;
|
||||
|
||||
@@ -131,16 +131,15 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||
// We don't do negative caching
|
||||
}
|
||||
|
||||
public AssetBase Get(string id, out bool negative)
|
||||
public bool Get(string id, out AssetBase asset)
|
||||
{
|
||||
negative = false;
|
||||
Object a = null;
|
||||
m_Cache.TryGet(id, out a);
|
||||
|
||||
Object asset = null;
|
||||
m_Cache.TryGet(id, out asset);
|
||||
Debug(a);
|
||||
|
||||
Debug(asset);
|
||||
|
||||
return (AssetBase)asset;
|
||||
asset = (AssetBase)a;
|
||||
return true;
|
||||
}
|
||||
|
||||
public void Expire(string id)
|
||||
|
||||
@@ -299,8 +299,8 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
|
||||
if (bakedTextureFace == null)
|
||||
continue;
|
||||
|
||||
bool negative;
|
||||
AssetBase asset = cache.Get(bakedTextureFace.TextureID.ToString(), out negative);
|
||||
AssetBase asset;
|
||||
cache.Get(bakedTextureFace.TextureID.ToString(), out asset);
|
||||
|
||||
if (asset != null && asset.Local)
|
||||
{
|
||||
|
||||
@@ -209,10 +209,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
|
||||
|
||||
if (m_Cache != null)
|
||||
{
|
||||
bool negative;
|
||||
asset = m_Cache.Get(id, out negative);
|
||||
|
||||
if (negative)
|
||||
if (!m_Cache.Get(id, out asset))
|
||||
return null;
|
||||
|
||||
if (asset != null)
|
||||
@@ -242,9 +239,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
|
||||
|
||||
public AssetBase GetCached(string id)
|
||||
{
|
||||
bool negative;
|
||||
AssetBase asset = null;
|
||||
if (m_Cache != null)
|
||||
return m_Cache.Get(id, out negative);
|
||||
m_Cache.Get(id, out asset);
|
||||
|
||||
return null;
|
||||
}
|
||||
@@ -255,10 +252,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
|
||||
|
||||
if (m_Cache != null)
|
||||
{
|
||||
bool negative;
|
||||
asset = m_Cache.Get(id, out negative);
|
||||
|
||||
if (negative)
|
||||
if (!m_Cache.Get(id, out asset))
|
||||
return null;
|
||||
|
||||
if (asset != null)
|
||||
@@ -281,10 +275,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
|
||||
|
||||
if (m_Cache != null)
|
||||
{
|
||||
bool negative;
|
||||
asset = m_Cache.Get(id, out negative);
|
||||
|
||||
if (negative)
|
||||
if (!m_Cache.Get(id, out asset))
|
||||
return null;
|
||||
|
||||
if (asset != null)
|
||||
@@ -304,10 +295,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
|
||||
|
||||
if (m_Cache != null)
|
||||
{
|
||||
bool negative;
|
||||
asset = m_Cache.Get(id, out negative);
|
||||
|
||||
if (negative)
|
||||
if (!m_Cache.Get(id, out asset))
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -398,9 +386,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
|
||||
{
|
||||
AssetBase asset = null;
|
||||
|
||||
bool negative;
|
||||
if (m_Cache != null)
|
||||
asset = m_Cache.Get(id, out negative);
|
||||
m_Cache.Get(id, out asset);
|
||||
|
||||
if (asset != null)
|
||||
{
|
||||
|
||||
@@ -159,10 +159,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
|
||||
AssetBase asset = null;
|
||||
if (m_Cache != null)
|
||||
{
|
||||
bool negative;
|
||||
asset = m_Cache.Get(id, out negative);
|
||||
|
||||
if (negative)
|
||||
if (!m_Cache.Get(id, out asset))
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -183,13 +180,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
|
||||
{
|
||||
// m_log.DebugFormat("[LOCAL ASSET SERVICES CONNECTOR]: Cache request for {0}", id);
|
||||
|
||||
AssetBase asset = null;
|
||||
if (m_Cache != null)
|
||||
{
|
||||
bool negative;
|
||||
return m_Cache.Get(id, out negative);
|
||||
}
|
||||
m_Cache.Get(id, out asset);
|
||||
|
||||
return null;
|
||||
return asset;
|
||||
}
|
||||
|
||||
public AssetMetadata GetMetadata(string id)
|
||||
@@ -197,9 +192,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
|
||||
AssetBase asset = null;
|
||||
if (m_Cache != null)
|
||||
{
|
||||
bool negative;
|
||||
asset = m_Cache.Get(id, out negative);
|
||||
if (negative)
|
||||
if (!m_Cache.Get(id, out asset))
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user