diff options
Test on the grid asset problem, don't update to this version unless you just want to test to see if this fixes anything (but it could just as well break grid assets even more).
Diffstat (limited to 'OpenSim/Framework/Communications/Cache')
-rw-r--r-- | OpenSim/Framework/Communications/Cache/AssetServerBase.cs | 2 | ||||
-rw-r--r-- | OpenSim/Framework/Communications/Cache/GridAssetClient.cs | 103 |
2 files changed, 43 insertions, 62 deletions
diff --git a/OpenSim/Framework/Communications/Cache/AssetServerBase.cs b/OpenSim/Framework/Communications/Cache/AssetServerBase.cs index 7109910..7c9df88 100644 --- a/OpenSim/Framework/Communications/Cache/AssetServerBase.cs +++ b/OpenSim/Framework/Communications/Cache/AssetServerBase.cs | |||
@@ -74,7 +74,7 @@ namespace OpenSim.Framework.Communications.Cache | |||
74 | _assetRequests.Enqueue(req); | 74 | _assetRequests.Enqueue(req); |
75 | } | 75 | } |
76 | 76 | ||
77 | public void UpdateAsset(AssetBase asset) | 77 | public virtual void UpdateAsset(AssetBase asset) |
78 | { | 78 | { |
79 | lock (syncLock) | 79 | lock (syncLock) |
80 | { | 80 | { |
diff --git a/OpenSim/Framework/Communications/Cache/GridAssetClient.cs b/OpenSim/Framework/Communications/Cache/GridAssetClient.cs index 66fa245..ec163fb 100644 --- a/OpenSim/Framework/Communications/Cache/GridAssetClient.cs +++ b/OpenSim/Framework/Communications/Cache/GridAssetClient.cs | |||
@@ -35,10 +35,9 @@ using OpenSim.Framework.Console; | |||
35 | 35 | ||
36 | namespace OpenSim.Framework.Communications.Cache | 36 | namespace OpenSim.Framework.Communications.Cache |
37 | { | 37 | { |
38 | public class GridAssetClient : IAssetServer | 38 | public class GridAssetClient : AssetServerBase |
39 | { | 39 | { |
40 | private string _assetServerUrl; | 40 | private string _assetServerUrl; |
41 | private IAssetReceiver _receiver; | ||
42 | 41 | ||
43 | public GridAssetClient(string serverUrl) | 42 | public GridAssetClient(string serverUrl) |
44 | { | 43 | { |
@@ -47,54 +46,60 @@ namespace OpenSim.Framework.Communications.Cache | |||
47 | 46 | ||
48 | #region IAssetServer Members | 47 | #region IAssetServer Members |
49 | 48 | ||
50 | public void SetReceiver(IAssetReceiver receiver) | 49 | protected override void RunRequests() |
51 | { | 50 | { |
52 | _receiver = receiver; | 51 | while (true) |
53 | } | ||
54 | |||
55 | public void FetchAsset(LLUUID assetID, bool isTexture) | ||
56 | { | ||
57 | Stream s = null; | ||
58 | try | ||
59 | { | 52 | { |
60 | MainLog.Instance.Debug("ASSETCACHE", "Querying for {0}", assetID.ToString()); | 53 | ARequest req = _assetRequests.Dequeue(); |
61 | 54 | ||
62 | RestClient rc = new RestClient(_assetServerUrl); | 55 | //MainLog.Instance.Verbose("AssetStorage","Requesting asset: " + req.AssetID); |
63 | rc.AddResourcePath("assets"); | ||
64 | rc.AddResourcePath(assetID.ToString()); | ||
65 | if (isTexture) | ||
66 | rc.AddQueryParameter("texture"); | ||
67 | 56 | ||
68 | rc.RequestMethod = "GET"; | ||
69 | s = rc.Request(); | ||
70 | 57 | ||
71 | if (s.Length > 0) | 58 | Stream s = null; |
59 | try | ||
72 | { | 60 | { |
73 | XmlSerializer xs = new XmlSerializer(typeof (AssetBase)); | 61 | MainLog.Instance.Debug("ASSETCACHE", "Querying for {0}", req.AssetID.ToString()); |
74 | AssetBase asset = (AssetBase) xs.Deserialize(s); | 62 | |
75 | 63 | RestClient rc = new RestClient(_assetServerUrl); | |
76 | _receiver.AssetReceived(asset, isTexture); | 64 | rc.AddResourcePath("assets"); |
65 | rc.AddResourcePath(req.AssetID.ToString()); | ||
66 | if (req.IsTexture) | ||
67 | rc.AddQueryParameter("texture"); | ||
68 | |||
69 | rc.RequestMethod = "GET"; | ||
70 | s = rc.Request(); | ||
71 | |||
72 | if (s.Length > 0) | ||
73 | { | ||
74 | XmlSerializer xs = new XmlSerializer(typeof(AssetBase)); | ||
75 | AssetBase newAsset = (AssetBase)xs.Deserialize(s); | ||
76 | |||
77 | _receiver.AssetReceived(newAsset, req.IsTexture); | ||
78 | } | ||
79 | else | ||
80 | { | ||
81 | MainLog.Instance.Debug("ASSETCACHE", "Asset not found {0}", req.AssetID.ToString()); | ||
82 | _receiver.AssetNotFound(req.AssetID); | ||
83 | } | ||
77 | } | 84 | } |
78 | else | 85 | catch (Exception e) |
79 | { | 86 | { |
80 | MainLog.Instance.Debug("ASSETCACHE", "Asset not found {0}", assetID.ToString()); | 87 | MainLog.Instance.Error("ASSETCACHE", e.Message); |
81 | _receiver.AssetNotFound(assetID); | 88 | MainLog.Instance.Debug("ASSETCACHE", "Getting asset {0}", req.AssetID.ToString()); |
89 | MainLog.Instance.Error("ASSETCACHE", e.StackTrace); | ||
82 | } | 90 | } |
83 | } | 91 | |
84 | catch (Exception e) | ||
85 | { | ||
86 | MainLog.Instance.Error("ASSETCACHE", e.Message); | ||
87 | MainLog.Instance.Debug("ASSETCACHE", "Getting asset {0}", assetID.ToString()); | ||
88 | MainLog.Instance.Error("ASSETCACHE", e.StackTrace); | ||
89 | } | 92 | } |
90 | } | 93 | } |
91 | 94 | ||
92 | public void UpdateAsset(AssetBase asset) | 95 | |
96 | |||
97 | public override void UpdateAsset(AssetBase asset) | ||
93 | { | 98 | { |
94 | throw new Exception("The method or operation is not implemented."); | 99 | throw new Exception("The method or operation is not implemented."); |
95 | } | 100 | } |
96 | 101 | ||
97 | public void StoreAndCommitAsset(AssetBase asset) | 102 | protected override void StoreAsset(AssetBase asset) |
98 | { | 103 | { |
99 | try | 104 | try |
100 | { | 105 | { |
@@ -113,40 +118,16 @@ namespace OpenSim.Framework.Communications.Cache | |||
113 | } | 118 | } |
114 | } | 119 | } |
115 | 120 | ||
116 | public void Close() | 121 | protected override void CommitAssets() |
117 | { | ||
118 | throw new Exception("The method or operation is not implemented."); | ||
119 | } | ||
120 | |||
121 | public void LoadAsset(AssetBase info, bool image, string filename) | ||
122 | { | 122 | { |
123 | throw new Exception("The method or operation is not implemented."); | ||
124 | } | 123 | } |
125 | 124 | ||
126 | public List<AssetBase> GetDefaultAssets() | 125 | public override void Close() |
127 | { | 126 | { |
128 | throw new Exception("The method or operation is not implemented."); | 127 | throw new Exception("The method or operation is not implemented."); |
129 | } | 128 | } |
130 | 129 | ||
131 | public AssetBase CreateImageAsset(string assetIdStr, string name, string filename) | 130 | |
132 | { | ||
133 | throw new Exception("The method or operation is not implemented."); | ||
134 | } | ||
135 | |||
136 | public void ForEachDefaultAsset(Action<AssetBase> action) | ||
137 | { | ||
138 | throw new Exception("The method or operation is not implemented."); | ||
139 | } | ||
140 | |||
141 | public AssetBase CreateAsset(string assetIdStr, string name, string filename, bool isImage) | ||
142 | { | ||
143 | throw new Exception("The method or operation is not implemented."); | ||
144 | } | ||
145 | |||
146 | public void ForEachXmlAsset(Action<AssetBase> action) | ||
147 | { | ||
148 | throw new Exception("The method or operation is not implemented."); | ||
149 | } | ||
150 | 131 | ||
151 | #endregion | 132 | #endregion |
152 | } | 133 | } |