diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Framework/Communications/Cache/SQLAssetServer.cs | 610 |
1 files changed, 305 insertions, 305 deletions
diff --git a/OpenSim/Framework/Communications/Cache/SQLAssetServer.cs b/OpenSim/Framework/Communications/Cache/SQLAssetServer.cs index 2a38307..082a240 100644 --- a/OpenSim/Framework/Communications/Cache/SQLAssetServer.cs +++ b/OpenSim/Framework/Communications/Cache/SQLAssetServer.cs | |||
@@ -1,310 +1,310 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | 2 | * Copyright (c) Contributors, http://www.openmetaverse.org/ |
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | * | 4 | * |
5 | * Redistribution and use in source and binary forms, with or without | 5 | * Redistribution and use in source and binary forms, with or without |
6 | * modification, are permitted provided that the following conditions are met: | 6 | * modification, are permitted provided that the following conditions are met: |
7 | * * Redistributions of source code must retain the above copyright | 7 | * * Redistributions of source code must retain the above copyright |
8 | * notice, this list of conditions and the following disclaimer. | 8 | * notice, this list of conditions and the following disclaimer. |
9 | * * Redistributions in binary form must reproduce the above copyright | 9 | * * Redistributions in binary form must reproduce the above copyright |
10 | * notice, this list of conditions and the following disclaimer in the | 10 | * notice, this list of conditions and the following disclaimer in the |
11 | * documentation and/or other materials provided with the distribution. | 11 | * documentation and/or other materials provided with the distribution. |
12 | * * Neither the name of the OpenSim Project nor the | 12 | * * Neither the name of the OpenSim Project nor the |
13 | * names of its contributors may be used to endorse or promote products | 13 | * names of its contributors may be used to endorse or promote products |
14 | * derived from this software without specific prior written permission. | 14 | * derived from this software without specific prior written permission. |
15 | * | 15 | * |
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY | 16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY |
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | 19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY |
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | 22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | using System; | 28 | using System; |
29 | using System.IO; | 29 | using System.IO; |
30 | using System.Threading; | 30 | using System.Threading; |
31 | using System.Reflection; | 31 | using System.Reflection; |
32 | using libsecondlife; | 32 | using libsecondlife; |
33 | using Nini.Config; | 33 | using Nini.Config; |
34 | using OpenSim.Framework.Console; | 34 | using OpenSim.Framework.Console; |
35 | using OpenSim.Framework.Interfaces; | 35 | using OpenSim.Framework.Interfaces; |
36 | using OpenSim.Framework.Types; | 36 | using OpenSim.Framework.Types; |
37 | using OpenSim.Framework.Utilities; | 37 | using OpenSim.Framework.Utilities; |
38 | 38 | ||
39 | namespace OpenSim.Framework.Communications.Caches | 39 | namespace OpenSim.Framework.Communications.Caches |
40 | { | 40 | { |
41 | 41 | ||
42 | public class SQLAssetServer : IAssetServer | 42 | public class SQLAssetServer : IAssetServer |
43 | { | 43 | { |
44 | private IAssetReceiver _receiver; | 44 | private IAssetReceiver _receiver; |
45 | private BlockingQueue<ARequest> _assetRequests; | 45 | private BlockingQueue<ARequest> _assetRequests; |
46 | private Thread _localAssetServerThread; | 46 | private Thread _localAssetServerThread; |
47 | protected IAssetProvider m_assetProviderPlugin; | 47 | protected IAssetProvider m_assetProviderPlugin; |
48 | private object syncLock = new object(); | 48 | private object syncLock = new object(); |
49 | 49 | ||
50 | 50 | ||
51 | public SQLAssetServer(string pluginName) | 51 | public SQLAssetServer(string pluginName) |
52 | { | 52 | { |
53 | _assetRequests = new BlockingQueue<ARequest>(); | 53 | _assetRequests = new BlockingQueue<ARequest>(); |
54 | AddPlugin(pluginName); | 54 | AddPlugin(pluginName); |
55 | 55 | ||
56 | SetUpAssetDatabase(); | 56 | SetUpAssetDatabase(); |
57 | 57 | ||
58 | this._localAssetServerThread = new Thread(new ThreadStart(RunRequests)); | 58 | this._localAssetServerThread = new Thread(new ThreadStart(RunRequests)); |
59 | this._localAssetServerThread.IsBackground = true; | 59 | this._localAssetServerThread.IsBackground = true; |
60 | this._localAssetServerThread.Start(); | 60 | this._localAssetServerThread.Start(); |
61 | 61 | ||
62 | } | 62 | } |
63 | 63 | ||
64 | public void AddPlugin(string FileName) | 64 | public void AddPlugin(string FileName) |
65 | { | 65 | { |
66 | MainLog.Instance.Verbose("SQLAssetServer", "AssetStorage: Attempting to load " + FileName); | 66 | MainLog.Instance.Verbose("SQLAssetServer", "AssetStorage: Attempting to load " + FileName); |
67 | Assembly pluginAssembly = Assembly.LoadFrom(FileName); | 67 | Assembly pluginAssembly = Assembly.LoadFrom(FileName); |
68 | 68 | ||
69 | foreach (Type pluginType in pluginAssembly.GetTypes()) | 69 | foreach (Type pluginType in pluginAssembly.GetTypes()) |
70 | { | 70 | { |
71 | if (!pluginType.IsAbstract) | 71 | if (!pluginType.IsAbstract) |
72 | { | 72 | { |
73 | Type typeInterface = pluginType.GetInterface("IAssetProvider", true); | 73 | Type typeInterface = pluginType.GetInterface("IAssetProvider", true); |
74 | 74 | ||
75 | if (typeInterface != null) | 75 | if (typeInterface != null) |
76 | { | 76 | { |
77 | IAssetProvider plug = (IAssetProvider)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); | 77 | IAssetProvider plug = (IAssetProvider)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); |
78 | m_assetProviderPlugin = plug; | 78 | m_assetProviderPlugin = plug; |
79 | m_assetProviderPlugin.Initialise(); | 79 | m_assetProviderPlugin.Initialise(); |
80 | 80 | ||
81 | MainLog.Instance.Verbose("AssetStorage: Added " + m_assetProviderPlugin.Name + " " + m_assetProviderPlugin.Version); | 81 | MainLog.Instance.Verbose("AssetStorage: Added " + m_assetProviderPlugin.Name + " " + m_assetProviderPlugin.Version); |
82 | } | 82 | } |
83 | 83 | ||
84 | typeInterface = null; | 84 | typeInterface = null; |
85 | } | 85 | } |
86 | } | 86 | } |
87 | 87 | ||
88 | pluginAssembly = null; | 88 | pluginAssembly = null; |
89 | } | 89 | } |
90 | 90 | ||
91 | public void SetReceiver(IAssetReceiver receiver) | 91 | public void SetReceiver(IAssetReceiver receiver) |
92 | { | 92 | { |
93 | this._receiver = receiver; | 93 | this._receiver = receiver; |
94 | } | 94 | } |
95 | 95 | ||
96 | public void FetchAsset(LLUUID assetID, bool isTexture) | 96 | public void FetchAsset(LLUUID assetID, bool isTexture) |
97 | { | 97 | { |
98 | ARequest req = new ARequest(); | 98 | ARequest req = new ARequest(); |
99 | req.AssetID = assetID; | 99 | req.AssetID = assetID; |
100 | req.IsTexture = isTexture; | 100 | req.IsTexture = isTexture; |
101 | this._assetRequests.Enqueue(req); | 101 | this._assetRequests.Enqueue(req); |
102 | } | 102 | } |
103 | 103 | ||
104 | public void UpdateAsset(AssetBase asset) | 104 | public void UpdateAsset(AssetBase asset) |
105 | { | 105 | { |
106 | lock (syncLock) | 106 | lock (syncLock) |
107 | { | 107 | { |
108 | m_assetProviderPlugin.UpdateAsset(asset); | 108 | m_assetProviderPlugin.UpdateAsset(asset); |
109 | m_assetProviderPlugin.CommitAssets(); | 109 | m_assetProviderPlugin.CommitAssets(); |
110 | } | 110 | } |
111 | } | 111 | } |
112 | 112 | ||
113 | public void CreateAsset(AssetBase asset) | 113 | public void CreateAsset(AssetBase asset) |
114 | { | 114 | { |
115 | lock (syncLock) | 115 | lock (syncLock) |
116 | { | 116 | { |
117 | m_assetProviderPlugin.CreateAsset(asset); | 117 | m_assetProviderPlugin.CreateAsset(asset); |
118 | m_assetProviderPlugin.CommitAssets(); | 118 | m_assetProviderPlugin.CommitAssets(); |
119 | } | 119 | } |
120 | } | 120 | } |
121 | 121 | ||
122 | public void SetServerInfo(string ServerUrl, string ServerKey) | 122 | public void SetServerInfo(string ServerUrl, string ServerKey) |
123 | { | 123 | { |
124 | 124 | ||
125 | } | 125 | } |
126 | public void Close() | 126 | public void Close() |
127 | { | 127 | { |
128 | m_assetProviderPlugin.CommitAssets(); | 128 | m_assetProviderPlugin.CommitAssets(); |
129 | } | 129 | } |
130 | 130 | ||
131 | private void RunRequests() | 131 | private void RunRequests() |
132 | { | 132 | { |
133 | 133 | ||
134 | while (true) | 134 | while (true) |
135 | { | 135 | { |
136 | ARequest req = this._assetRequests.Dequeue(); | 136 | ARequest req = this._assetRequests.Dequeue(); |
137 | 137 | ||
138 | MainLog.Instance.Verbose("Requesting asset: " + req.AssetID); | 138 | MainLog.Instance.Verbose("Requesting asset: " + req.AssetID); |
139 | 139 | ||
140 | AssetBase asset = null; | 140 | AssetBase asset = null; |
141 | lock (syncLock) | 141 | lock (syncLock) |
142 | { | 142 | { |
143 | asset = m_assetProviderPlugin.FetchAsset(req.AssetID); | 143 | asset = m_assetProviderPlugin.FetchAsset(req.AssetID); |
144 | } | 144 | } |
145 | if (asset != null) | 145 | if (asset != null) |
146 | { | 146 | { |
147 | _receiver.AssetReceived(asset, req.IsTexture); | 147 | _receiver.AssetReceived(asset, req.IsTexture); |
148 | } | 148 | } |
149 | else | 149 | else |
150 | { | 150 | { |
151 | _receiver.AssetNotFound(req.AssetID); | 151 | _receiver.AssetNotFound(req.AssetID); |
152 | } | 152 | } |
153 | 153 | ||
154 | } | 154 | } |
155 | 155 | ||
156 | } | 156 | } |
157 | 157 | ||
158 | private void SetUpAssetDatabase() | 158 | private void SetUpAssetDatabase() |
159 | { | 159 | { |
160 | MainLog.Instance.Verbose("Setting up asset database"); | 160 | MainLog.Instance.Verbose("Setting up asset database"); |
161 | 161 | ||
162 | AssetBase Image = new AssetBase(); | 162 | AssetBase Image = new AssetBase(); |
163 | Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000001"); | 163 | Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000001"); |
164 | Image.Name = "Bricks"; | 164 | Image.Name = "Bricks"; |
165 | this.LoadAsset(Image, true, "bricks.jp2"); | 165 | this.LoadAsset(Image, true, "bricks.jp2"); |
166 | m_assetProviderPlugin.CreateAsset(Image); | 166 | m_assetProviderPlugin.CreateAsset(Image); |
167 | 167 | ||
168 | Image = new AssetBase(); | 168 | Image = new AssetBase(); |
169 | Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000002"); | 169 | Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000002"); |
170 | Image.Name = "Plywood"; | 170 | Image.Name = "Plywood"; |
171 | this.LoadAsset(Image, true, "plywood.jp2"); | 171 | this.LoadAsset(Image, true, "plywood.jp2"); |
172 | m_assetProviderPlugin.CreateAsset(Image); | 172 | m_assetProviderPlugin.CreateAsset(Image); |
173 | 173 | ||
174 | Image = new AssetBase(); | 174 | Image = new AssetBase(); |
175 | Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000003"); | 175 | Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000003"); |
176 | Image.Name = "Rocks"; | 176 | Image.Name = "Rocks"; |
177 | this.LoadAsset(Image, true, "rocks.jp2"); | 177 | this.LoadAsset(Image, true, "rocks.jp2"); |
178 | m_assetProviderPlugin.CreateAsset(Image); | 178 | m_assetProviderPlugin.CreateAsset(Image); |
179 | 179 | ||
180 | Image = new AssetBase(); | 180 | Image = new AssetBase(); |
181 | Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000004"); | 181 | Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000004"); |
182 | Image.Name = "Granite"; | 182 | Image.Name = "Granite"; |
183 | this.LoadAsset(Image, true, "granite.jp2"); | 183 | this.LoadAsset(Image, true, "granite.jp2"); |
184 | m_assetProviderPlugin.CreateAsset(Image); | 184 | m_assetProviderPlugin.CreateAsset(Image); |
185 | 185 | ||
186 | Image = new AssetBase(); | 186 | Image = new AssetBase(); |
187 | Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000005"); | 187 | Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000005"); |
188 | Image.Name = "Hardwood"; | 188 | Image.Name = "Hardwood"; |
189 | this.LoadAsset(Image, true, "hardwood.jp2"); | 189 | this.LoadAsset(Image, true, "hardwood.jp2"); |
190 | m_assetProviderPlugin.CreateAsset(Image); | 190 | m_assetProviderPlugin.CreateAsset(Image); |
191 | 191 | ||
192 | Image = new AssetBase(); | 192 | Image = new AssetBase(); |
193 | Image.FullID = new LLUUID("00000000-0000-0000-5005-000000000005"); | 193 | Image.FullID = new LLUUID("00000000-0000-0000-5005-000000000005"); |
194 | Image.Name = "Prim Base Texture"; | 194 | Image.Name = "Prim Base Texture"; |
195 | this.LoadAsset(Image, true, "plywood.jp2"); | 195 | this.LoadAsset(Image, true, "plywood.jp2"); |
196 | m_assetProviderPlugin.CreateAsset(Image); | 196 | m_assetProviderPlugin.CreateAsset(Image); |
197 | 197 | ||
198 | Image = new AssetBase(); | 198 | Image = new AssetBase(); |
199 | Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000006"); | 199 | Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000006"); |
200 | Image.Name = "Map Base Texture"; | 200 | Image.Name = "Map Base Texture"; |
201 | this.LoadAsset(Image, true, "map_base.jp2"); | 201 | this.LoadAsset(Image, true, "map_base.jp2"); |
202 | m_assetProviderPlugin.CreateAsset(Image); | 202 | m_assetProviderPlugin.CreateAsset(Image); |
203 | 203 | ||
204 | Image = new AssetBase(); | 204 | Image = new AssetBase(); |
205 | Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000007"); | 205 | Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000007"); |
206 | Image.Name = "Map Texture"; | 206 | Image.Name = "Map Texture"; |
207 | this.LoadAsset(Image, true, "map1.jp2"); | 207 | this.LoadAsset(Image, true, "map1.jp2"); |
208 | m_assetProviderPlugin.CreateAsset(Image); | 208 | m_assetProviderPlugin.CreateAsset(Image); |
209 | 209 | ||
210 | Image = new AssetBase(); | 210 | Image = new AssetBase(); |
211 | Image.FullID = new LLUUID("00000000-0000-1111-9999-000000000010"); | 211 | Image.FullID = new LLUUID("00000000-0000-1111-9999-000000000010"); |
212 | Image.Name = "Female Body Texture"; | 212 | Image.Name = "Female Body Texture"; |
213 | this.LoadAsset(Image, true, "femalebody.jp2"); | 213 | this.LoadAsset(Image, true, "femalebody.jp2"); |
214 | m_assetProviderPlugin.CreateAsset(Image); | 214 | m_assetProviderPlugin.CreateAsset(Image); |
215 | 215 | ||
216 | Image = new AssetBase(); | 216 | Image = new AssetBase(); |
217 | Image.FullID = new LLUUID("00000000-0000-1111-9999-000000000011"); | 217 | Image.FullID = new LLUUID("00000000-0000-1111-9999-000000000011"); |
218 | Image.Name = "Female Bottom Texture"; | 218 | Image.Name = "Female Bottom Texture"; |
219 | this.LoadAsset(Image, true, "femalebottom.jp2"); | 219 | this.LoadAsset(Image, true, "femalebottom.jp2"); |
220 | m_assetProviderPlugin.CreateAsset(Image); | 220 | m_assetProviderPlugin.CreateAsset(Image); |
221 | 221 | ||
222 | Image = new AssetBase(); | 222 | Image = new AssetBase(); |
223 | Image.FullID = new LLUUID("00000000-0000-1111-9999-000000000012"); | 223 | Image.FullID = new LLUUID("00000000-0000-1111-9999-000000000012"); |
224 | Image.Name = "Female Face Texture"; | 224 | Image.Name = "Female Face Texture"; |
225 | this.LoadAsset(Image, true, "femaleface.jp2"); | 225 | this.LoadAsset(Image, true, "femaleface.jp2"); |
226 | m_assetProviderPlugin.CreateAsset(Image); | 226 | m_assetProviderPlugin.CreateAsset(Image); |
227 | 227 | ||
228 | Image = new AssetBase(); | 228 | Image = new AssetBase(); |
229 | Image.FullID = new LLUUID("77c41e39-38f9-f75a-024e-585989bbabbb"); | 229 | Image.FullID = new LLUUID("77c41e39-38f9-f75a-024e-585989bbabbb"); |
230 | Image.Name = "Skin"; | 230 | Image.Name = "Skin"; |
231 | Image.Type = 13; | 231 | Image.Type = 13; |
232 | Image.InvType = 13; | 232 | Image.InvType = 13; |
233 | this.LoadAsset(Image, false, "base_skin.dat"); | 233 | this.LoadAsset(Image, false, "base_skin.dat"); |
234 | m_assetProviderPlugin.CreateAsset(Image); | 234 | m_assetProviderPlugin.CreateAsset(Image); |
235 | 235 | ||
236 | Image = new AssetBase(); | 236 | Image = new AssetBase(); |
237 | Image.FullID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73"); | 237 | Image.FullID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73"); |
238 | Image.Name = "Shape"; | 238 | Image.Name = "Shape"; |
239 | Image.Type = 13; | 239 | Image.Type = 13; |
240 | Image.InvType = 13; | 240 | Image.InvType = 13; |
241 | this.LoadAsset(Image, false, "base_shape.dat"); | 241 | this.LoadAsset(Image, false, "base_shape.dat"); |
242 | m_assetProviderPlugin.CreateAsset(Image); | 242 | m_assetProviderPlugin.CreateAsset(Image); |
243 | 243 | ||
244 | Image = new AssetBase(); | 244 | Image = new AssetBase(); |
245 | Image.FullID = new LLUUID("00000000-38f9-1111-024e-222222111110"); | 245 | Image.FullID = new LLUUID("00000000-38f9-1111-024e-222222111110"); |
246 | Image.Name = "Shirt"; | 246 | Image.Name = "Shirt"; |
247 | Image.Type = 5; | 247 | Image.Type = 5; |
248 | Image.InvType = 18; | 248 | Image.InvType = 18; |
249 | this.LoadAsset(Image, false, "newshirt.dat"); | 249 | this.LoadAsset(Image, false, "newshirt.dat"); |
250 | m_assetProviderPlugin.CreateAsset(Image); | 250 | m_assetProviderPlugin.CreateAsset(Image); |
251 | 251 | ||
252 | Image = new AssetBase(); | 252 | Image = new AssetBase(); |
253 | Image.FullID = new LLUUID("00000000-38f9-1111-024e-222222111120"); | 253 | Image.FullID = new LLUUID("00000000-38f9-1111-024e-222222111120"); |
254 | Image.Name = "Shirt"; | 254 | Image.Name = "Shirt"; |
255 | Image.Type = 5; | 255 | Image.Type = 5; |
256 | Image.InvType = 18; | 256 | Image.InvType = 18; |
257 | this.LoadAsset(Image, false, "newpants.dat"); | 257 | this.LoadAsset(Image, false, "newpants.dat"); |
258 | m_assetProviderPlugin.CreateAsset(Image); | 258 | m_assetProviderPlugin.CreateAsset(Image); |
259 | 259 | ||
260 | string filePath = Path.Combine(Util.configDir(), "OpenSimAssetSet.xml"); | 260 | string filePath = Path.Combine(Util.configDir(), "OpenSimAssetSet.xml"); |
261 | if (File.Exists(filePath)) | 261 | if (File.Exists(filePath)) |
262 | { | 262 | { |
263 | XmlConfigSource source = new XmlConfigSource(filePath); | 263 | XmlConfigSource source = new XmlConfigSource(filePath); |
264 | ReadAssetDetails(source); | 264 | ReadAssetDetails(source); |
265 | } | 265 | } |
266 | 266 | ||
267 | m_assetProviderPlugin.CommitAssets(); | 267 | m_assetProviderPlugin.CommitAssets(); |
268 | } | 268 | } |
269 | 269 | ||
270 | protected void ReadAssetDetails(IConfigSource source) | 270 | protected void ReadAssetDetails(IConfigSource source) |
271 | { | 271 | { |
272 | AssetBase newAsset = null; | 272 | AssetBase newAsset = null; |
273 | for (int i = 0; i < source.Configs.Count; i++) | 273 | for (int i = 0; i < source.Configs.Count; i++) |
274 | { | 274 | { |
275 | newAsset = new AssetBase(); | 275 | newAsset = new AssetBase(); |
276 | newAsset.FullID = new LLUUID(source.Configs[i].GetString("assetID", LLUUID.Random().ToStringHyphenated())); | 276 | newAsset.FullID = new LLUUID(source.Configs[i].GetString("assetID", LLUUID.Random().ToStringHyphenated())); |
277 | newAsset.Name = source.Configs[i].GetString("name", ""); | 277 | newAsset.Name = source.Configs[i].GetString("name", ""); |
278 | newAsset.Type = (sbyte)source.Configs[i].GetInt("assetType", 0); | 278 | newAsset.Type = (sbyte)source.Configs[i].GetInt("assetType", 0); |
279 | newAsset.InvType = (sbyte)source.Configs[i].GetInt("inventoryType", 0); | 279 | newAsset.InvType = (sbyte)source.Configs[i].GetInt("inventoryType", 0); |
280 | string fileName = source.Configs[i].GetString("fileName", ""); | 280 | string fileName = source.Configs[i].GetString("fileName", ""); |
281 | if (fileName != "") | 281 | if (fileName != "") |
282 | { | 282 | { |
283 | MainLog.Instance.Verbose("Creating new asset: " + newAsset.Name); | 283 | MainLog.Instance.Verbose("Creating new asset: " + newAsset.Name); |
284 | this.LoadAsset(newAsset, false, fileName); | 284 | this.LoadAsset(newAsset, false, fileName); |
285 | m_assetProviderPlugin.CreateAsset(newAsset); | 285 | m_assetProviderPlugin.CreateAsset(newAsset); |
286 | } | 286 | } |
287 | } | 287 | } |
288 | } | 288 | } |
289 | 289 | ||
290 | private void LoadAsset(AssetBase info, bool image, string filename) | 290 | private void LoadAsset(AssetBase info, bool image, string filename) |
291 | { | 291 | { |
292 | //should request Asset from storage manager | 292 | //should request Asset from storage manager |
293 | //but for now read from file | 293 | //but for now read from file |
294 | 294 | ||
295 | string dataPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "assets"); //+ folder; | 295 | string dataPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "assets"); //+ folder; |
296 | string fileName = Path.Combine(dataPath, filename); | 296 | string fileName = Path.Combine(dataPath, filename); |
297 | FileInfo fInfo = new FileInfo(fileName); | 297 | FileInfo fInfo = new FileInfo(fileName); |
298 | long numBytes = fInfo.Length; | 298 | long numBytes = fInfo.Length; |
299 | FileStream fStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); | 299 | FileStream fStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); |
300 | byte[] idata = new byte[numBytes]; | 300 | byte[] idata = new byte[numBytes]; |
301 | BinaryReader br = new BinaryReader(fStream); | 301 | BinaryReader br = new BinaryReader(fStream); |
302 | idata = br.ReadBytes((int)numBytes); | 302 | idata = br.ReadBytes((int)numBytes); |
303 | br.Close(); | 303 | br.Close(); |
304 | fStream.Close(); | 304 | fStream.Close(); |
305 | info.Data = idata; | 305 | info.Data = idata; |
306 | //info.loaded=true; | 306 | //info.loaded=true; |
307 | } | 307 | } |
308 | } | 308 | } |
309 | 309 | ||
310 | } | 310 | } |