diff --git a/OpenSim/Framework/Communications/Cache/AssetServerBase.cs b/OpenSim/Framework/Communications/Cache/AssetServerBase.cs index 71099105bd..7c9df8851f 100644 --- a/OpenSim/Framework/Communications/Cache/AssetServerBase.cs +++ b/OpenSim/Framework/Communications/Cache/AssetServerBase.cs @@ -74,7 +74,7 @@ namespace OpenSim.Framework.Communications.Cache _assetRequests.Enqueue(req); } - public void UpdateAsset(AssetBase asset) + public virtual void UpdateAsset(AssetBase asset) { lock (syncLock) { diff --git a/OpenSim/Framework/Communications/Cache/GridAssetClient.cs b/OpenSim/Framework/Communications/Cache/GridAssetClient.cs index 66fa245089..ec163fbe33 100644 --- a/OpenSim/Framework/Communications/Cache/GridAssetClient.cs +++ b/OpenSim/Framework/Communications/Cache/GridAssetClient.cs @@ -35,10 +35,9 @@ using OpenSim.Framework.Console; namespace OpenSim.Framework.Communications.Cache { - public class GridAssetClient : IAssetServer + public class GridAssetClient : AssetServerBase { private string _assetServerUrl; - private IAssetReceiver _receiver; public GridAssetClient(string serverUrl) { @@ -47,54 +46,60 @@ namespace OpenSim.Framework.Communications.Cache #region IAssetServer Members - public void SetReceiver(IAssetReceiver receiver) + protected override void RunRequests() { - _receiver = receiver; - } - - public void FetchAsset(LLUUID assetID, bool isTexture) - { - Stream s = null; - try + while (true) { - MainLog.Instance.Debug("ASSETCACHE", "Querying for {0}", assetID.ToString()); + ARequest req = _assetRequests.Dequeue(); - RestClient rc = new RestClient(_assetServerUrl); - rc.AddResourcePath("assets"); - rc.AddResourcePath(assetID.ToString()); - if (isTexture) - rc.AddQueryParameter("texture"); + //MainLog.Instance.Verbose("AssetStorage","Requesting asset: " + req.AssetID); - rc.RequestMethod = "GET"; - s = rc.Request(); - if (s.Length > 0) + Stream s = null; + try { - XmlSerializer xs = new XmlSerializer(typeof (AssetBase)); - AssetBase asset = (AssetBase) xs.Deserialize(s); + MainLog.Instance.Debug("ASSETCACHE", "Querying for {0}", req.AssetID.ToString()); - _receiver.AssetReceived(asset, isTexture); + RestClient rc = new RestClient(_assetServerUrl); + rc.AddResourcePath("assets"); + rc.AddResourcePath(req.AssetID.ToString()); + if (req.IsTexture) + rc.AddQueryParameter("texture"); + + rc.RequestMethod = "GET"; + s = rc.Request(); + + if (s.Length > 0) + { + XmlSerializer xs = new XmlSerializer(typeof(AssetBase)); + AssetBase newAsset = (AssetBase)xs.Deserialize(s); + + _receiver.AssetReceived(newAsset, req.IsTexture); + } + else + { + MainLog.Instance.Debug("ASSETCACHE", "Asset not found {0}", req.AssetID.ToString()); + _receiver.AssetNotFound(req.AssetID); + } } - else + catch (Exception e) { - MainLog.Instance.Debug("ASSETCACHE", "Asset not found {0}", assetID.ToString()); - _receiver.AssetNotFound(assetID); + MainLog.Instance.Error("ASSETCACHE", e.Message); + MainLog.Instance.Debug("ASSETCACHE", "Getting asset {0}", req.AssetID.ToString()); + MainLog.Instance.Error("ASSETCACHE", e.StackTrace); } - } - catch (Exception e) - { - MainLog.Instance.Error("ASSETCACHE", e.Message); - MainLog.Instance.Debug("ASSETCACHE", "Getting asset {0}", assetID.ToString()); - MainLog.Instance.Error("ASSETCACHE", e.StackTrace); + } } - public void UpdateAsset(AssetBase asset) + + + public override void UpdateAsset(AssetBase asset) { throw new Exception("The method or operation is not implemented."); } - public void StoreAndCommitAsset(AssetBase asset) + protected override void StoreAsset(AssetBase asset) { try { @@ -113,40 +118,16 @@ namespace OpenSim.Framework.Communications.Cache } } - public void Close() + protected override void CommitAssets() + { + } + + public override void Close() { throw new Exception("The method or operation is not implemented."); } - public void LoadAsset(AssetBase info, bool image, string filename) - { - throw new Exception("The method or operation is not implemented."); - } - - public List GetDefaultAssets() - { - throw new Exception("The method or operation is not implemented."); - } - - public AssetBase CreateImageAsset(string assetIdStr, string name, string filename) - { - throw new Exception("The method or operation is not implemented."); - } - - public void ForEachDefaultAsset(Action action) - { - throw new Exception("The method or operation is not implemented."); - } - - public AssetBase CreateAsset(string assetIdStr, string name, string filename, bool isImage) - { - throw new Exception("The method or operation is not implemented."); - } - - public void ForEachXmlAsset(Action action) - { - throw new Exception("The method or operation is not implemented."); - } + #endregion }