Refactor asset request processing for consistent status information on whether an asset was actually found or not
parent
4314b6115b
commit
45567b71b8
|
@ -72,7 +72,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void ProcessRequest(AssetRequest req)
|
protected override AssetBase _ProcessRequest(AssetRequest req)
|
||||||
{
|
{
|
||||||
byte[] idata = null;
|
byte[] idata = null;
|
||||||
bool found = false;
|
bool found = false;
|
||||||
|
@ -93,12 +93,12 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
asset.Name = foundAsset.Name;
|
asset.Name = foundAsset.Name;
|
||||||
idata = foundAsset.Data;
|
idata = foundAsset.Data;
|
||||||
asset.Data = idata;
|
asset.Data = idata;
|
||||||
_receiver.AssetReceived(asset, req.IsTexture);
|
|
||||||
|
return asset;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//asset.FullID = ;
|
return null;
|
||||||
_receiver.AssetNotFound(req.AssetID);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,38 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
protected abstract void StoreAsset(AssetBase asset);
|
protected abstract void StoreAsset(AssetBase asset);
|
||||||
protected abstract void CommitAssets();
|
protected abstract void CommitAssets();
|
||||||
|
|
||||||
protected abstract void ProcessRequest(AssetRequest req);
|
/// <summary>
|
||||||
|
/// This method must be implemented by a subclass to retrieve the asset named in the
|
||||||
|
/// AssetRequest. If the asset is not found, null should be returned.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="req"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
protected abstract AssetBase _ProcessRequest(AssetRequest req);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Process an asset request. This method will call _ProcessRequest(AssetRequest req)
|
||||||
|
/// on the subclass.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="req"></param>
|
||||||
|
protected void ProcessRequest(AssetRequest req)
|
||||||
|
{
|
||||||
|
AssetBase asset = _ProcessRequest(req);
|
||||||
|
|
||||||
|
if (asset != null)
|
||||||
|
{
|
||||||
|
MainLog.Instance.Verbose(
|
||||||
|
"ASSET", "Asset {0} received from asset server", req.AssetID);
|
||||||
|
|
||||||
|
_receiver.AssetReceived(asset, req.IsTexture);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MainLog.Instance.Error(
|
||||||
|
"ASSET", "Asset {0} not found by asset server", req.AssetID);
|
||||||
|
|
||||||
|
_receiver.AssetNotFound(req.AssetID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void LoadDefaultAssets()
|
public void LoadDefaultAssets()
|
||||||
{
|
{
|
||||||
|
@ -117,9 +148,9 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
AssetRequest req = new AssetRequest();
|
AssetRequest req = new AssetRequest();
|
||||||
req.AssetID = assetID;
|
req.AssetID = assetID;
|
||||||
req.IsTexture = isTexture;
|
req.IsTexture = isTexture;
|
||||||
MainLog.Instance.Verbose("ASSET","Adding {0} to request queue", assetID);
|
|
||||||
_assetRequests.Enqueue(req);
|
_assetRequests.Enqueue(req);
|
||||||
MainLog.Instance.Verbose("ASSET","Added {0} to request queue", assetID);
|
|
||||||
|
MainLog.Instance.Verbose("ASSET", "Added {0} to request queue", assetID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void UpdateAsset(AssetBase asset)
|
public virtual void UpdateAsset(AssetBase asset)
|
||||||
|
|
|
@ -47,7 +47,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
|
|
||||||
#region IAssetServer Members
|
#region IAssetServer Members
|
||||||
|
|
||||||
protected override void ProcessRequest(AssetRequest req)
|
protected override AssetBase _ProcessRequest(AssetRequest req)
|
||||||
{
|
{
|
||||||
Stream s = null;
|
Stream s = null;
|
||||||
try
|
try
|
||||||
|
@ -66,14 +66,8 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
if (s.Length > 0)
|
if (s.Length > 0)
|
||||||
{
|
{
|
||||||
XmlSerializer xs = new XmlSerializer(typeof(AssetBase));
|
XmlSerializer xs = new XmlSerializer(typeof(AssetBase));
|
||||||
AssetBase newAsset = (AssetBase)xs.Deserialize(s);
|
|
||||||
|
|
||||||
_receiver.AssetReceived(newAsset, req.IsTexture);
|
return (AssetBase)xs.Deserialize(s);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
MainLog.Instance.Debug("ASSETCACHE", "Asset not found {0}", req.AssetID.ToString());
|
|
||||||
_receiver.AssetNotFound(req.AssetID);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
@ -82,6 +76,8 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
MainLog.Instance.Debug("ASSETCACHE", "Getting asset {0}", req.AssetID.ToString());
|
MainLog.Instance.Debug("ASSETCACHE", "Getting asset {0}", req.AssetID.ToString());
|
||||||
MainLog.Instance.Error("ASSETCACHE", e.StackTrace);
|
MainLog.Instance.Error("ASSETCACHE", e.StackTrace);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -77,21 +77,15 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
m_assetProviderPlugin.CommitAssets();
|
m_assetProviderPlugin.CommitAssets();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void ProcessRequest(AssetRequest req)
|
protected override AssetBase _ProcessRequest(AssetRequest req)
|
||||||
{
|
{
|
||||||
AssetBase asset;
|
AssetBase asset;
|
||||||
lock (syncLock)
|
lock (syncLock)
|
||||||
{
|
{
|
||||||
asset = m_assetProviderPlugin.FetchAsset(req.AssetID);
|
asset = m_assetProviderPlugin.FetchAsset(req.AssetID);
|
||||||
}
|
}
|
||||||
if (asset != null)
|
|
||||||
{
|
return asset;
|
||||||
_receiver.AssetReceived(asset, req.IsTexture);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_receiver.AssetNotFound(req.AssetID);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void StoreAsset(AssetBase asset)
|
protected override void StoreAsset(AssetBase asset)
|
||||||
|
|
Loading…
Reference in New Issue