aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorlbsa712007-07-04 14:12:32 +0000
committerlbsa712007-07-04 14:12:32 +0000
commit6a2588454a1ac4bb484ad0b9ee648e9ac156f8db (patch)
treefd4e0d33f65e36365d15d991f95d323e6d15e8b1 /OpenSim/Region
parent* Added StreamHandler support (diff)
downloadopensim-SC-6a2588454a1ac4bb484ad0b9ee648e9ac156f8db.zip
opensim-SC-6a2588454a1ac4bb484ad0b9ee648e9ac156f8db.tar.gz
opensim-SC-6a2588454a1ac4bb484ad0b9ee648e9ac156f8db.tar.bz2
opensim-SC-6a2588454a1ac4bb484ad0b9ee648e9ac156f8db.tar.xz
* Removed AssetHttpServer, using BaseHttpServer instead
* Removed legacy REST handling * Created two custom IStreamHandlers for asset up/download * Removed quite a lot of double and triple encodings, trying to work towards binary only and direct write into storage. * Introduced BaseStreamHandler with GetParam() and some other goodies
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Application/OpenSimMain.cs94
-rw-r--r--OpenSim/Region/Capabilities/Caps.cs11
2 files changed, 62 insertions, 43 deletions
diff --git a/OpenSim/Region/Application/OpenSimMain.cs b/OpenSim/Region/Application/OpenSimMain.cs
index eaa067b..e2486bd 100644
--- a/OpenSim/Region/Application/OpenSimMain.cs
+++ b/OpenSim/Region/Application/OpenSimMain.cs
@@ -44,6 +44,7 @@ using OpenSim.Region.ClientStack;
44using OpenSim.Region.Communications.Local; 44using OpenSim.Region.Communications.Local;
45using OpenSim.Region.Communications.OGS1; 45using OpenSim.Region.Communications.OGS1;
46using OpenSim.Region.Environment.Scenes; 46using OpenSim.Region.Environment.Scenes;
47using System.Text;
47 48
48namespace OpenSim 49namespace OpenSim
49{ 50{
@@ -51,7 +52,7 @@ namespace OpenSim
51 public class OpenSimMain : RegionApplicationBase, conscmd_callback 52 public class OpenSimMain : RegionApplicationBase, conscmd_callback
52 { 53 {
53 protected CommunicationsManager commsManager; 54 protected CommunicationsManager commsManager;
54 // private CheckSumServer checkServer; 55 // private CheckSumServer checkServer;
55 56
56 private bool m_silent; 57 private bool m_silent;
57 private string m_logFilename = "region-console-" + Guid.NewGuid().ToString() + ".log"; 58 private string m_logFilename = "region-console-" + Guid.NewGuid().ToString() + ".log";
@@ -84,10 +85,10 @@ namespace OpenSim
84 m_log = new LogBase(m_logFilename, "Region", this, m_silent); 85 m_log = new LogBase(m_logFilename, "Region", this, m_silent);
85 MainLog.Instance = m_log; 86 MainLog.Instance = m_log;
86 87
87 m_log.Verbose( "Main.cs:Startup() - Loading configuration"); 88 m_log.Verbose("Main.cs:Startup() - Loading configuration");
88 this.serversData.InitConfig(this.m_sandbox, this.localConfig); 89 this.serversData.InitConfig(this.m_sandbox, this.localConfig);
89 this.localConfig.Close();//for now we can close it as no other classes read from it , but this should change 90 this.localConfig.Close();//for now we can close it as no other classes read from it , but this should change
90 91
91 ScenePresence.LoadTextureFile("avatar-texture.dat"); 92 ScenePresence.LoadTextureFile("avatar-texture.dat");
92 93
93 ClientView.TerrainManager = new TerrainManager(new SecondLife()); 94 ClientView.TerrainManager = new TerrainManager(new SecondLife());
@@ -95,8 +96,8 @@ namespace OpenSim
95 if (m_sandbox) 96 if (m_sandbox)
96 { 97 {
97 this.SetupLocalGridServers(); 98 this.SetupLocalGridServers();
98 // this.checkServer = new CheckSumServer(12036); 99 // this.checkServer = new CheckSumServer(12036);
99 // this.checkServer.ServerListener(); 100 // this.checkServer.ServerListener();
100 this.commsManager = new CommunicationsLocal(this.serversData); 101 this.commsManager = new CommunicationsLocal(this.serversData);
101 } 102 }
102 else 103 else
@@ -114,7 +115,7 @@ namespace OpenSim
114 115
115 this.SetupWorld(); 116 this.SetupWorld();
116 117
117 m_log.Verbose( "Main.cs:Startup() - Initialising HTTP server"); 118 m_log.Verbose("Main.cs:Startup() - Initialising HTTP server");
118 119
119 120
120 121
@@ -124,7 +125,7 @@ namespace OpenSim
124 } 125 }
125 126
126 //Start http server 127 //Start http server
127 m_log.Verbose( "Main.cs:Startup() - Starting HTTP server"); 128 m_log.Verbose("Main.cs:Startup() - Starting HTTP server");
128 httpServer.Start(); 129 httpServer.Start();
129 130
130 // Start UDP servers 131 // Start UDP servers
@@ -145,7 +146,7 @@ namespace OpenSim
145 } 146 }
146 catch (Exception e) 147 catch (Exception e)
147 { 148 {
148 m_log.Error( e.Message + "\nSorry, could not setup local cache"); 149 m_log.Error(e.Message + "\nSorry, could not setup local cache");
149 Environment.Exit(1); 150 Environment.Exit(1);
150 } 151 }
151 152
@@ -160,7 +161,7 @@ namespace OpenSim
160 } 161 }
161 catch (Exception e) 162 catch (Exception e)
162 { 163 {
163 m_log.Error( e.Message + "\nSorry, could not setup remote cache"); 164 m_log.Error(e.Message + "\nSorry, could not setup remote cache");
164 Environment.Exit(1); 165 Environment.Exit(1);
165 } 166 }
166 } 167 }
@@ -226,7 +227,7 @@ namespace OpenSim
226 LocalWorld.LoadStorageDLL("OpenSim.Region.Storage.LocalStorageDb4o.dll"); //all these dll names shouldn't be hard coded. 227 LocalWorld.LoadStorageDLL("OpenSim.Region.Storage.LocalStorageDb4o.dll"); //all these dll names shouldn't be hard coded.
227 LocalWorld.LoadWorldMap(); 228 LocalWorld.LoadWorldMap();
228 229
229 m_log.Verbose( "Main.cs:Startup() - Starting up messaging system"); 230 m_log.Verbose("Main.cs:Startup() - Starting up messaging system");
230 LocalWorld.PhysScene = this.physManager.GetPhysicsScene(this.m_physicsEngine); 231 LocalWorld.PhysScene = this.physManager.GetPhysicsScene(this.m_physicsEngine);
231 LocalWorld.PhysScene.SetTerrain(LocalWorld.Terrain.getHeights1D()); 232 LocalWorld.PhysScene.SetTerrain(LocalWorld.Terrain.getHeights1D());
232 LocalWorld.LoadPrimsFromStorage(); 233 LocalWorld.LoadPrimsFromStorage();
@@ -244,21 +245,36 @@ namespace OpenSim
244 } 245 }
245 } 246 }
246 247
247 protected override void SetupHttpListener() 248 private class SimStatusHandler : IStreamHandler
248 { 249 {
249 httpServer = new BaseHttpServer(this.serversData.HttpListenerPort); //regionData[0].IPListenPort); 250 public byte[] Handle(string path, Stream request)
251 {
252 return Encoding.UTF8.GetBytes("OK");
253 }
250 254
251 if (!this.m_sandbox) 255 public string ContentType
252 { 256 {
257 get { return "text/plain"; }
258 }
253 259
254 // we are in Grid mode so set a XmlRpc handler to handle "expect_user" calls from the user server 260 public string HttpMethod
261 {
262 get { return "GET"; }
263 }
264
265 public string Path
266 {
267 get { return "/simstatus/"; }
268 }
269 }
255 270
271 protected override void SetupHttpListener()
272 {
273 httpServer = new BaseHttpServer(this.serversData.HttpListenerPort); //regionData[0].IPListenPort);
256 274
257 httpServer.AddRestHandler("GET", "/simstatus/", 275 if (!this.m_sandbox)
258 delegate(string request, string path, string param) 276 {
259 { 277 httpServer.AddStreamHandler( new SimStatusHandler() );
260 return "OK";
261 });
262 } 278 }
263 } 279 }
264 280
@@ -340,7 +356,7 @@ namespace OpenSim
340 switch (attri) 356 switch (attri)
341 { 357 {
342 default: 358 default:
343 m_log.Warn( "Main.cs: SetupFromConfig() - Invalid value for PhysicsEngine attribute, terminating"); 359 m_log.Warn("Main.cs: SetupFromConfig() - Invalid value for PhysicsEngine attribute, terminating");
344 Environment.Exit(1); 360 Environment.Exit(1);
345 break; 361 break;
346 362
@@ -376,11 +392,11 @@ namespace OpenSim
376 /// </summary> 392 /// </summary>
377 public virtual void Shutdown() 393 public virtual void Shutdown()
378 { 394 {
379 m_log.Verbose( "Main.cs:Shutdown() - Closing all threads"); 395 m_log.Verbose("Main.cs:Shutdown() - Closing all threads");
380 m_log.Verbose( "Main.cs:Shutdown() - Killing listener thread"); 396 m_log.Verbose("Main.cs:Shutdown() - Killing listener thread");
381 m_log.Verbose( "Main.cs:Shutdown() - Killing clients"); 397 m_log.Verbose("Main.cs:Shutdown() - Killing clients");
382 // IMPLEMENT THIS 398 // IMPLEMENT THIS
383 m_log.Verbose( "Main.cs:Shutdown() - Closing console and terminating"); 399 m_log.Verbose("Main.cs:Shutdown() - Closing console and terminating");
384 for (int i = 0; i < m_localWorld.Count; i++) 400 for (int i = 0; i < m_localWorld.Count; i++)
385 { 401 {
386 ((Scene)m_localWorld[i]).Close(); 402 ((Scene)m_localWorld[i]).Close();
@@ -400,8 +416,8 @@ namespace OpenSim
400 switch (command) 416 switch (command)
401 { 417 {
402 case "help": 418 case "help":
403 m_log.Error( "show users - show info about connected users"); 419 m_log.Error("show users - show info about connected users");
404 m_log.Error( "shutdown - disconnect all clients and shutdown"); 420 m_log.Error("shutdown - disconnect all clients and shutdown");
405 break; 421 break;
406 422
407 case "show": 423 case "show":
@@ -415,7 +431,7 @@ namespace OpenSim
415 string result = ""; 431 string result = "";
416 for (int i = 0; i < m_localWorld.Count; i++) 432 for (int i = 0; i < m_localWorld.Count; i++)
417 { 433 {
418 if (!((Scene)m_localWorld[i]).Terrain.RunTerrainCmd(cmdparams, ref result,m_localWorld[i].RegionInfo.RegionName)) 434 if (!((Scene)m_localWorld[i]).Terrain.RunTerrainCmd(cmdparams, ref result, m_localWorld[i].RegionInfo.RegionName))
419 { 435 {
420 m_log.Error(result); 436 m_log.Error(result);
421 } 437 }
@@ -427,7 +443,7 @@ namespace OpenSim
427 break; 443 break;
428 444
429 default: 445 default:
430 m_log.Error( "Unknown command"); 446 m_log.Error("Unknown command");
431 break; 447 break;
432 } 448 }
433 } 449 }
@@ -441,22 +457,22 @@ namespace OpenSim
441 switch (ShowWhat) 457 switch (ShowWhat)
442 { 458 {
443 case "uptime": 459 case "uptime":
444 m_log.Error( "OpenSim has been running since " + startuptime.ToString()); 460 m_log.Error("OpenSim has been running since " + startuptime.ToString());
445 m_log.Error( "That is " + (DateTime.Now - startuptime).ToString()); 461 m_log.Error("That is " + (DateTime.Now - startuptime).ToString());
446 break; 462 break;
447 case "users": 463 case "users":
448 ScenePresence TempAv; 464 ScenePresence TempAv;
449 m_log.Error( String.Format("{0,-16}{1,-16}{2,-25}{3,-25}{4,-16}{5,-16}{6,-16}", "Firstname", "Lastname", "Agent ID", "Session ID", "Circuit", "IP","World")); 465 m_log.Error(String.Format("{0,-16}{1,-16}{2,-25}{3,-25}{4,-16}{5,-16}{6,-16}", "Firstname", "Lastname", "Agent ID", "Session ID", "Circuit", "IP", "World"));
450 for (int i = 0; i < m_localWorld.Count; i++) 466 for (int i = 0; i < m_localWorld.Count; i++)
451 { 467 {
452 foreach (libsecondlife.LLUUID UUID in ((Scene)m_localWorld[i]).Entities.Keys) 468 foreach (libsecondlife.LLUUID UUID in ((Scene)m_localWorld[i]).Entities.Keys)
453 { 469 {
454 if (((Scene)m_localWorld[i]).Entities[UUID].ToString() == "OpenSim.world.Avatar") 470 if (((Scene)m_localWorld[i]).Entities[UUID].ToString() == "OpenSim.world.Avatar")
455 { 471 {
456 TempAv = (ScenePresence)((Scene)m_localWorld[i]).Entities[UUID]; 472 TempAv = (ScenePresence)((Scene)m_localWorld[i]).Entities[UUID];
457 m_log.Error(String.Format("{0,-16}{1,-16}{2,-25}{3,-25}{4,-16},{5,-16}{6,-16}", TempAv.firstname, TempAv.lastname, UUID, TempAv.ControllingClient.AgentId, "Unknown", "Unknown"), ((Scene)m_localWorld[i]).RegionInfo.RegionName); 473 m_log.Error(String.Format("{0,-16}{1,-16}{2,-25}{3,-25}{4,-16},{5,-16}{6,-16}", TempAv.firstname, TempAv.lastname, UUID, TempAv.ControllingClient.AgentId, "Unknown", "Unknown"), ((Scene)m_localWorld[i]).RegionInfo.RegionName);
458 } 474 }
459 } 475 }
460 } 476 }
461 break; 477 break;
462 } 478 }
diff --git a/OpenSim/Region/Capabilities/Caps.cs b/OpenSim/Region/Capabilities/Caps.cs
index 0f6c471..1d07683 100644
--- a/OpenSim/Region/Capabilities/Caps.cs
+++ b/OpenSim/Region/Capabilities/Caps.cs
@@ -82,7 +82,7 @@ namespace OpenSim.Region.Capabilities
82 private void AddCapsHandler( BaseHttpServer httpListener, string path, RestMethod restMethod ) 82 private void AddCapsHandler( BaseHttpServer httpListener, string path, RestMethod restMethod )
83 { 83 {
84 string capsBase = "/CAPS/" + m_capsObjectPath; 84 string capsBase = "/CAPS/" + m_capsObjectPath;
85 httpListener.AddStreamHandler(capsBase + path, new RestStreamHandler(restMethod, "POST", "application/xml")); 85 httpListener.AddStreamHandler(new RestStreamHandler("POST", capsBase + path, restMethod));
86 } 86 }
87 87
88 /// <summary> 88 /// <summary>
@@ -211,9 +211,11 @@ namespace OpenSim.Region.Capabilities
211 string res = ""; 211 string res = "";
212 LLUUID newAsset = LLUUID.Random(); 212 LLUUID newAsset = LLUUID.Random();
213 LLUUID newInvItem = LLUUID.Random(); 213 LLUUID newInvItem = LLUUID.Random();
214 string uploaderPath = m_capsObjectPath + Util.RandomClass.Next(5000, 8000).ToString("0000"); 214 string uploaderPath = Util.RandomClass.Next(5000, 8000).ToString("0000");
215 AssetUploader uploader = new AssetUploader(newAsset, newInvItem, uploaderPath, this.httpListener); 215 AssetUploader uploader = new AssetUploader(newAsset, newInvItem, uploaderPath, this.httpListener);
216 httpListener.AddRestHandler("POST", "/CAPS/" + uploaderPath, uploader.uploaderCaps); 216
217 AddCapsHandler( httpListener, uploaderPath, uploader.uploaderCaps);
218
217 string uploaderURL = "http://" + m_httpListenerHostName + ":" + m_httpListenPort.ToString() + "/CAPS/" + uploaderPath; 219 string uploaderURL = "http://" + m_httpListenerHostName + ":" + m_httpListenPort.ToString() + "/CAPS/" + uploaderPath;
218 //Console.WriteLine("uploader url is " + uploaderURL); 220 //Console.WriteLine("uploader url is " + uploaderURL);
219 res += "<llsd><map>"; 221 res += "<llsd><map>";
@@ -269,7 +271,8 @@ namespace OpenSim.Region.Capabilities
269 res += "</map></llsd>"; 271 res += "</map></llsd>";
270 272
271 // Console.WriteLine("asset " + newAssetID.ToStringHyphenated() + " , inventory item " + inv.ToStringHyphenated()); 273 // Console.WriteLine("asset " + newAssetID.ToStringHyphenated() + " , inventory item " + inv.ToStringHyphenated());
272 httpListener.RemoveRestHandler("POST", "/CAPS/" + uploaderPath); 274 httpListener.RemoveStreamHandler("POST", "/CAPS/" + uploaderPath);
275
273 if (OnUpLoad != null) 276 if (OnUpLoad != null)
274 { 277 {
275 OnUpLoad(newAssetID, inv, data); 278 OnUpLoad(newAssetID, inv, data);