aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Application
diff options
context:
space:
mode:
authorDr Scofield2008-09-18 15:44:05 +0000
committerDr Scofield2008-09-18 15:44:05 +0000
commit03f246d6fea009f1812019f5f036987b96b47a2b (patch)
treef7194082d70c68a4cb64e92036d6613518fbd89c /OpenSim/Region/Application
parentadd some comments and some try blocks around object storage (diff)
downloadopensim-SC-03f246d6fea009f1812019f5f036987b96b47a2b.zip
opensim-SC-03f246d6fea009f1812019f5f036987b96b47a2b.tar.gz
opensim-SC-03f246d6fea009f1812019f5f036987b96b47a2b.tar.bz2
opensim-SC-03f246d6fea009f1812019f5f036987b96b47a2b.tar.xz
adds support to delete a region completely and offers that
functionality via the console command "delete-region" and also via RemoteAdminPlugin. minor typo fix.
Diffstat (limited to 'OpenSim/Region/Application')
-rw-r--r--OpenSim/Region/Application/OpenSim.cs30
-rw-r--r--OpenSim/Region/Application/OpenSimBase.cs31
2 files changed, 47 insertions, 14 deletions
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs
index e48df81..9f313eb 100644
--- a/OpenSim/Region/Application/OpenSim.cs
+++ b/OpenSim/Region/Application/OpenSim.cs
@@ -311,22 +311,23 @@ namespace OpenSim
311 break; 311 break;
312 312
313 case "remove-region": 313 case "remove-region":
314 string regName = CombineParams(cmdparams, 0); 314 string regRemoveName = CombineParams(cmdparams, 0);
315 315
316 Scene killScene; 316 Scene removeScene;
317 if (m_sceneManager.TryGetScene(regName, out killScene)) 317 if (m_sceneManager.TryGetScene(regRemoveName, out removeScene))
318 { 318 RemoveRegion(removeScene, false);
319 // only need to check this if we are not at the 319 else
320 // root level 320 m_console.Error("no region with that name");
321 if ((m_sceneManager.CurrentScene != null) && 321 break;
322 (m_sceneManager.CurrentScene.RegionInfo.RegionID == killScene.RegionInfo.RegionID))
323 {
324 m_sceneManager.TrySetCurrentScene("..");
325 }
326 322
327 m_regionData.Remove(killScene.RegionInfo); 323 case "delete-region":
328 m_sceneManager.CloseScene(killScene); 324 string regDeleteName = CombineParams(cmdparams, 0);
329 } 325
326 Scene killScene;
327 if (m_sceneManager.TryGetScene(regDeleteName, out killScene))
328 RemoveRegion(killScene, true);
329 else
330 m_console.Error("no region with that name");
330 break; 331 break;
331 332
332 case "restart": 333 case "restart":
@@ -610,6 +611,7 @@ namespace OpenSim
610 m_console.Notice("force-update - force an update of prims in the scene"); 611 m_console.Notice("force-update - force an update of prims in the scene");
611 m_console.Notice("restart - disconnects all clients and restarts the sims in the instance."); 612 m_console.Notice("restart - disconnects all clients and restarts the sims in the instance.");
612 m_console.Notice("remove-region [name] - remove a region"); 613 m_console.Notice("remove-region [name] - remove a region");
614 m_console.Notice("delete-region [name] - delete a region");
613 m_console.Notice("load-xml [filename] - load prims from XML (DEPRECATED)"); 615 m_console.Notice("load-xml [filename] - load prims from XML (DEPRECATED)");
614 m_console.Notice("save-xml [filename] - save prims to XML (DEPRECATED)"); 616 m_console.Notice("save-xml [filename] - save prims to XML (DEPRECATED)");
615 m_console.Notice("save-xml2 [filename] - save prims to XML using version 2 format"); 617 m_console.Notice("save-xml2 [filename] - save prims to XML using version 2 format");
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs
index 4a02264..e5cf07a 100644
--- a/OpenSim/Region/Application/OpenSimBase.cs
+++ b/OpenSim/Region/Application/OpenSimBase.cs
@@ -589,6 +589,37 @@ namespace OpenSim
589 return clientServer; 589 return clientServer;
590 } 590 }
591 591
592 public void RemoveRegion(Scene scene, bool cleanup)
593 {
594 // only need to check this if we are not at the
595 // root level
596 if ((m_sceneManager.CurrentScene != null) &&
597 (m_sceneManager.CurrentScene.RegionInfo.RegionID == scene.RegionInfo.RegionID))
598 {
599 m_sceneManager.TrySetCurrentScene("..");
600 }
601
602 scene.DeleteAllSceneObjects();
603 m_regionData.Remove(scene.RegionInfo);
604 m_sceneManager.CloseScene(scene);
605
606 if (!cleanup)
607 return;
608
609 if (!String.IsNullOrEmpty(scene.RegionInfo.RegionFile))
610 {
611 File.Delete(scene.RegionInfo.RegionFile);
612 m_log.InfoFormat("[OPENSIM MAIN] deleting region file \"{0}\"", scene.RegionInfo.RegionFile);
613 }
614 }
615
616 public void RemoveRegion(string name, bool cleanUp)
617 {
618 Scene target;
619 if (m_sceneManager.TryGetScene(name, out target))
620 RemoveRegion(target, cleanUp);
621 }
622
592 protected override StorageManager CreateStorageManager(string connectionstring, string estateconnectionstring) 623 protected override StorageManager CreateStorageManager(string connectionstring, string estateconnectionstring)
593 { 624 {
594 return new StorageManager(m_storageDll, connectionstring, estateconnectionstring); 625 return new StorageManager(m_storageDll, connectionstring, estateconnectionstring);