diff options
author | Dr Scofield | 2008-09-18 15:44:05 +0000 |
---|---|---|
committer | Dr Scofield | 2008-09-18 15:44:05 +0000 |
commit | 03f246d6fea009f1812019f5f036987b96b47a2b (patch) | |
tree | f7194082d70c68a4cb64e92036d6613518fbd89c /OpenSim/Region/Application | |
parent | add some comments and some try blocks around object storage (diff) | |
download | opensim-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.cs | 30 | ||||
-rw-r--r-- | OpenSim/Region/Application/OpenSimBase.cs | 31 |
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); |