aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenGridServices.AssetServer/Main.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenGridServices.AssetServer/Main.cs')
-rw-r--r--OpenGridServices.AssetServer/Main.cs323
1 files changed, 177 insertions, 146 deletions
diff --git a/OpenGridServices.AssetServer/Main.cs b/OpenGridServices.AssetServer/Main.cs
index c2607c1..ef9cc67 100644
--- a/OpenGridServices.AssetServer/Main.cs
+++ b/OpenGridServices.AssetServer/Main.cs
@@ -40,6 +40,7 @@ using OpenSim.Framework.Sims;
40using OpenSim.Framework.Console; 40using OpenSim.Framework.Console;
41using OpenSim.Framework.Types; 41using OpenSim.Framework.Types;
42using OpenSim.Framework.Interfaces; 42using OpenSim.Framework.Interfaces;
43using OpenSim.Framework.Utilities;
43using OpenSim.GridInterfaces.Local; // REFACTORING IS NEEDED!!!!!!!!!!! 44using OpenSim.GridInterfaces.Local; // REFACTORING IS NEEDED!!!!!!!!!!!
44using OpenSim.Servers; 45using OpenSim.Servers;
45using Db4objects.Db4o; 46using Db4objects.Db4o;
@@ -52,7 +53,7 @@ namespace OpenGridServices.AssetServer
52 public class OpenAsset_Main : BaseServer, conscmd_callback 53 public class OpenAsset_Main : BaseServer, conscmd_callback
53 { 54 {
54 private IObjectContainer db; 55 private IObjectContainer db;
55 56
56 public static OpenAsset_Main assetserver; 57 public static OpenAsset_Main assetserver;
57 58
58 private ConsoleBase m_console; 59 private ConsoleBase m_console;
@@ -70,7 +71,7 @@ namespace OpenGridServices.AssetServer
70 71
71 private void Work() 72 private void Work()
72 { 73 {
73 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.HIGH,"\nEnter help for a list of commands\n"); 74 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.HIGH, "\nEnter help for a list of commands\n");
74 75
75 while (true) 76 while (true)
76 { 77 {
@@ -86,161 +87,191 @@ namespace OpenGridServices.AssetServer
86 87
87 public void Startup() 88 public void Startup()
88 { 89 {
89 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.LOW,"Main.cs:Startup() - Setting up asset DB"); 90 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "Main.cs:Startup() - Setting up asset DB");
90 setupDB(); 91 setupDB();
91
92 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.LOW,"Main.cs:Startup() - Starting HTTP process");
93 BaseHttpServer httpServer = new BaseHttpServer(8003);
94 92
93 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "Main.cs:Startup() - Starting HTTP process");
94 AssetHttpServer httpServer = new AssetHttpServer(8003);
95 95
96 httpServer.AddRestHandler("GET", "/assets/", this.assetGetMethod);
97 96
97 httpServer.AddRestHandler("GET", "/assets/", this.assetGetMethod);
98 httpServer.AddRestHandler("POST", "/assets/", this.assetPostMethod);
98 99
99 httpServer.Start(); 100 httpServer.Start();
100 101
101 } 102 }
102 103
103 public string assetGetMethod(string request, string path, string param) { 104 public string assetPostMethod(string requestBody, string path, string param)
104 byte[] assetdata=getAssetData(new LLUUID(param),false); 105 {
105 if(assetdata!=null) { 106 AssetBase asset = new AssetBase();
106 return System.Text.Encoding.ASCII.GetString(assetdata); 107 asset.Name = "";
107 } else { 108 asset.FullID = new LLUUID(param);
108 return ""; 109 Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
109 } 110 byte[] buffer = Windows1252Encoding.GetBytes(requestBody);
111 asset.Data = buffer;
112 AssetStorage store = new AssetStorage();
113 store.Data = asset.Data;
114 store.Name = asset.Name;
115 store.UUID = asset.FullID;
116 db.Set(store);
117 db.Commit();
118 return "";
119 }
110 120
111 } 121 public string assetGetMethod(string request, string path, string param)
122 {
123 Console.WriteLine("got a request " +param);
124 byte[] assetdata = getAssetData(new LLUUID(param), false);
125 if (assetdata != null)
126 {
127 Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
128 string ret = Windows1252Encoding.GetString(assetdata);
129 //string ret = System.Text.Encoding.Unicode.GetString(assetdata);
112 130
113 public byte[] getAssetData(LLUUID assetID, bool isTexture) { 131 return ret;
114 byte[] idata = null; 132
115 bool found = false; 133 }
116 AssetStorage foundAsset = null; 134 else
135 {
136 return "";
137 }
117 138
118 IObjectSet result = db.Get(new AssetStorage(assetID)); 139 }
119 if (result.Count > 0)
120 {
121 foundAsset = (AssetStorage)result.Next();
122 found = true;
123 }
124 140
125 if (found) 141 public byte[] getAssetData(LLUUID assetID, bool isTexture)
126 { 142 {
127 return foundAsset.Data; 143 byte[] idata = null;
128 } 144 bool found = false;
129 else 145 AssetStorage foundAsset = null;
130 { 146
131 return null; 147 IObjectSet result = db.Get(new AssetStorage(assetID));
132 } 148 if (result.Count > 0)
133 } 149 {
134 150 foundAsset = (AssetStorage)result.Next();
135 public void setupDB() { 151 found = true;
136 bool yapfile=System.IO.File.Exists("assets.yap"); 152 }
137 try 153
138 { 154 if (found)
139 db = Db4oFactory.OpenFile("assets.yap"); 155 {
140 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW,"Main.cs:setupDB() - creation"); 156 return foundAsset.Data;
141 } 157 }
142 catch (Exception e) 158 else
143 { 159 {
144 db.Close(); 160 return null;
145 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.MEDIUM,"Main.cs:setupDB() - Exception occured"); 161 }
146 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.MEDIUM,e.ToString()); 162 }
147 } 163
148 if (!yapfile) 164 public void setupDB()
149 { 165 {
150 this.LoadDB(); 166 bool yapfile = System.IO.File.Exists("assets.yap");
151 } 167 try
152 } 168 {
153 169 db = Db4oFactory.OpenFile("assets.yap");
154 public void LoadDB() { 170 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "Main.cs:setupDB() - creation");
155 try 171 }
156 { 172 catch (Exception e)
157 173 {
158 Console.WriteLine("setting up Asset database"); 174 db.Close();
159 175 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.MEDIUM, "Main.cs:setupDB() - Exception occured");
160 AssetBase Image = new AssetBase(); 176 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.MEDIUM, e.ToString());
161 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000001"); 177 }
162 Image.Name = "Bricks"; 178 if (!yapfile)
163 this.LoadAsset(Image, true, "bricks.jp2"); 179 {
164 AssetStorage store = new AssetStorage(); 180 this.LoadDB();
165 store.Data = Image.Data; 181 }
166 store.Name = Image.Name; 182 }
167 store.UUID = Image.FullID; 183
168 db.Set(store); 184 public void LoadDB()
169 db.Commit(); 185 {
170 186 try
171 Image = new AssetBase(); 187 {
172 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000002"); 188
173 Image.Name = "Plywood"; 189 Console.WriteLine("setting up Asset database");
174 this.LoadAsset(Image, true, "plywood.jp2"); 190
175 store = new AssetStorage(); 191 AssetBase Image = new AssetBase();
176 store.Data = Image.Data; 192 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000001");
177 store.Name = Image.Name; 193 Image.Name = "Bricks";
178 store.UUID = Image.FullID; 194 this.LoadAsset(Image, true, "bricks.jp2");
179 db.Set(store); 195 AssetStorage store = new AssetStorage();
180 db.Commit(); 196 store.Data = Image.Data;
181 197 store.Name = Image.Name;
182 Image = new AssetBase(); 198 store.UUID = Image.FullID;
183 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000003"); 199 db.Set(store);
184 Image.Name = "Rocks"; 200 db.Commit();
185 this.LoadAsset(Image, true, "rocks.jp2"); 201
186 store = new AssetStorage(); 202 Image = new AssetBase();
187 store.Data = Image.Data; 203 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000002");
188 store.Name = Image.Name; 204 Image.Name = "Plywood";
189 store.UUID = Image.FullID; 205 this.LoadAsset(Image, true, "plywood.jp2");
190 db.Set(store); 206 store = new AssetStorage();
191 db.Commit(); 207 store.Data = Image.Data;
192 208 store.Name = Image.Name;
193 Image = new AssetBase(); 209 store.UUID = Image.FullID;
194 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000004"); 210 db.Set(store);
195 Image.Name = "Granite"; 211 db.Commit();
196 this.LoadAsset(Image, true, "granite.jp2"); 212
197 store = new AssetStorage(); 213 Image = new AssetBase();
198 store.Data = Image.Data; 214 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000003");
199 store.Name = Image.Name; 215 Image.Name = "Rocks";
200 store.UUID = Image.FullID; 216 this.LoadAsset(Image, true, "rocks.jp2");
201 db.Set(store); 217 store = new AssetStorage();
202 db.Commit(); 218 store.Data = Image.Data;
203 219 store.Name = Image.Name;
204 Image = new AssetBase(); 220 store.UUID = Image.FullID;
205 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000005"); 221 db.Set(store);
206 Image.Name = "Hardwood"; 222 db.Commit();
207 this.LoadAsset(Image, true, "hardwood.jp2"); 223
208 store = new AssetStorage(); 224 Image = new AssetBase();
209 store.Data = Image.Data; 225 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000004");
210 store.Name = Image.Name; 226 Image.Name = "Granite";
211 store.UUID = Image.FullID; 227 this.LoadAsset(Image, true, "granite.jp2");
212 db.Set(store); 228 store = new AssetStorage();
213 db.Commit(); 229 store.Data = Image.Data;
214 230 store.Name = Image.Name;
215 Image = new AssetBase(); 231 store.UUID = Image.FullID;
216 Image.FullID = new LLUUID("00000000-0000-0000-5005-000000000005"); 232 db.Set(store);
217 Image.Name = "Prim Base Texture"; 233 db.Commit();
218 this.LoadAsset(Image, true, "plywood.jp2"); 234
219 store = new AssetStorage(); 235 Image = new AssetBase();
220 store.Data = Image.Data; 236 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000005");
221 store.Name = Image.Name; 237 Image.Name = "Hardwood";
222 store.UUID = Image.FullID; 238 this.LoadAsset(Image, true, "hardwood.jp2");
223 db.Set(store); 239 store = new AssetStorage();
224 db.Commit(); 240 store.Data = Image.Data;
225 241 store.Name = Image.Name;
226 Image = new AssetBase(); 242 store.UUID = Image.FullID;
227 Image.FullID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73"); 243 db.Set(store);
228 Image.Name = "Shape"; 244 db.Commit();
229 this.LoadAsset(Image, false, "base_shape.dat"); 245
230 store = new AssetStorage(); 246 Image = new AssetBase();
231 store.Data = Image.Data; 247 Image.FullID = new LLUUID("00000000-0000-0000-5005-000000000005");
232 store.Name = Image.Name; 248 Image.Name = "Prim Base Texture";
233 store.UUID = Image.FullID; 249 this.LoadAsset(Image, true, "plywood.jp2");
234 db.Set(store); 250 store = new AssetStorage();
235 db.Commit(); 251 store.Data = Image.Data;
236 } 252 store.Name = Image.Name;
237 catch (Exception e) 253 store.UUID = Image.FullID;
238 { 254 db.Set(store);
239 Console.WriteLine(e.Message); 255 db.Commit();
240 } 256
241 } 257 Image = new AssetBase();
242 258 Image.FullID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73");
243 private void LoadAsset(AssetBase info, bool image, string filename) 259 Image.Name = "Shape";
260 this.LoadAsset(Image, false, "base_shape.dat");
261 store = new AssetStorage();
262 store.Data = Image.Data;
263 store.Name = Image.Name;
264 store.UUID = Image.FullID;
265 db.Set(store);
266 db.Commit();
267 }
268 catch (Exception e)
269 {
270 Console.WriteLine(e.Message);
271 }
272 }
273
274 private void LoadAsset(AssetBase info, bool image, string filename)
244 { 275 {
245 276
246 277
@@ -291,7 +322,7 @@ namespace OpenGridServices.AssetServer
291 switch (cmd) 322 switch (cmd)
292 { 323 {
293 case "help": 324 case "help":
294 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.HIGH,"shutdown - shutdown this asset server (USE CAUTION!)"); 325 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.HIGH, "shutdown - shutdown this asset server (USE CAUTION!)");
295 break; 326 break;
296 327
297 case "shutdown": 328 case "shutdown":