diff options
author | Justin Clarke Casey | 2009-04-15 19:12:37 +0000 |
---|---|---|
committer | Justin Clarke Casey | 2009-04-15 19:12:37 +0000 |
commit | 63936d442ca7e6bdc0f09a5e974c57b3b5726353 (patch) | |
tree | add84f90ce716015e93f9dae721e7876992e6b6c /OpenSim | |
parent | Convert both script engines to new region module format. Add proper unload (diff) | |
download | opensim-SC-63936d442ca7e6bdc0f09a5e974c57b3b5726353.zip opensim-SC-63936d442ca7e6bdc0f09a5e974c57b3b5726353.tar.gz opensim-SC-63936d442ca7e6bdc0f09a5e974c57b3b5726353.tar.bz2 opensim-SC-63936d442ca7e6bdc0f09a5e974c57b3b5726353.tar.xz |
* Make it possible to add a request id to load and save oar requests
* This allows specific requests to be identified.
Diffstat (limited to 'OpenSim')
8 files changed, 83 insertions, 38 deletions
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs index 3f6e822..1e57be0 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs | |||
@@ -55,6 +55,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
55 | 55 | ||
56 | private Scene m_scene; | 56 | private Scene m_scene; |
57 | private Stream m_loadStream; | 57 | private Stream m_loadStream; |
58 | private Guid m_requestId; | ||
58 | private string m_errorMessage; | 59 | private string m_errorMessage; |
59 | 60 | ||
60 | /// <value> | 61 | /// <value> |
@@ -67,19 +68,21 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
67 | /// </summary> | 68 | /// </summary> |
68 | private IDictionary<UUID, bool> m_validUserUuids = new Dictionary<UUID, bool>(); | 69 | private IDictionary<UUID, bool> m_validUserUuids = new Dictionary<UUID, bool>(); |
69 | 70 | ||
70 | public ArchiveReadRequest(Scene scene, string loadPath, bool merge) | 71 | public ArchiveReadRequest(Scene scene, string loadPath, bool merge, Guid requestId) |
71 | { | 72 | { |
72 | m_scene = scene; | 73 | m_scene = scene; |
73 | m_loadStream = new GZipStream(GetStream(loadPath), CompressionMode.Decompress); | 74 | m_loadStream = new GZipStream(GetStream(loadPath), CompressionMode.Decompress); |
74 | m_errorMessage = String.Empty; | 75 | m_errorMessage = String.Empty; |
75 | m_merge = merge; | 76 | m_merge = merge; |
77 | m_requestId = requestId; | ||
76 | } | 78 | } |
77 | 79 | ||
78 | public ArchiveReadRequest(Scene scene, Stream loadStream, bool merge) | 80 | public ArchiveReadRequest(Scene scene, Stream loadStream, bool merge, Guid requestId) |
79 | { | 81 | { |
80 | m_scene = scene; | 82 | m_scene = scene; |
81 | m_loadStream = loadStream; | 83 | m_loadStream = loadStream; |
82 | m_merge = merge; | 84 | m_merge = merge; |
85 | m_requestId = requestId; | ||
83 | } | 86 | } |
84 | 87 | ||
85 | /// <summary> | 88 | /// <summary> |
@@ -141,7 +144,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
141 | m_log.ErrorFormat( | 144 | m_log.ErrorFormat( |
142 | "[ARCHIVER]: Error loading oar file. Exception was: {0}", e); | 145 | "[ARCHIVER]: Error loading oar file. Exception was: {0}", e); |
143 | m_errorMessage += e.ToString(); | 146 | m_errorMessage += e.ToString(); |
144 | m_scene.EventManager.TriggerOarFileLoaded(m_errorMessage); | 147 | m_scene.EventManager.TriggerOarFileLoaded(m_requestId, m_errorMessage); |
145 | return; | 148 | return; |
146 | } | 149 | } |
147 | 150 | ||
@@ -163,8 +166,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
163 | m_log.InfoFormat("[ARCHIVER]: Loading {0} scene objects. Please wait.", serialisedSceneObjects.Count); | 166 | m_log.InfoFormat("[ARCHIVER]: Loading {0} scene objects. Please wait.", serialisedSceneObjects.Count); |
164 | 167 | ||
165 | IRegionSerialiserModule serialiser = m_scene.RequestModuleInterface<IRegionSerialiserModule>(); | 168 | IRegionSerialiserModule serialiser = m_scene.RequestModuleInterface<IRegionSerialiserModule>(); |
166 | int sceneObjectsLoadedCount = 0; | 169 | int sceneObjectsLoadedCount = 0; |
167 | |||
168 | 170 | ||
169 | foreach (string serialisedSceneObject in serialisedSceneObjects) | 171 | foreach (string serialisedSceneObject in serialisedSceneObjects) |
170 | { | 172 | { |
@@ -247,7 +249,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
247 | 249 | ||
248 | m_log.InfoFormat("[ARCHIVER]: Successfully loaded archive"); | 250 | m_log.InfoFormat("[ARCHIVER]: Successfully loaded archive"); |
249 | 251 | ||
250 | m_scene.EventManager.TriggerOarFileLoaded(m_errorMessage); | 252 | m_scene.EventManager.TriggerOarFileLoaded(m_requestId, m_errorMessage); |
251 | } | 253 | } |
252 | 254 | ||
253 | /// <summary> | 255 | /// <summary> |
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs index 85391b3..943d9d1 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestExecution.cs | |||
@@ -58,19 +58,22 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
58 | protected List<SceneObjectGroup> m_sceneObjects; | 58 | protected List<SceneObjectGroup> m_sceneObjects; |
59 | protected Scene m_scene; | 59 | protected Scene m_scene; |
60 | protected Stream m_saveStream; | 60 | protected Stream m_saveStream; |
61 | protected Guid m_requestId; | ||
61 | 62 | ||
62 | public ArchiveWriteRequestExecution( | 63 | public ArchiveWriteRequestExecution( |
63 | List<SceneObjectGroup> sceneObjects, | 64 | List<SceneObjectGroup> sceneObjects, |
64 | ITerrainModule terrainModule, | 65 | ITerrainModule terrainModule, |
65 | IRegionSerialiserModule serialiser, | 66 | IRegionSerialiserModule serialiser, |
66 | Scene scene, | 67 | Scene scene, |
67 | Stream saveStream) | 68 | Stream saveStream, |
69 | Guid requestId) | ||
68 | { | 70 | { |
69 | m_sceneObjects = sceneObjects; | 71 | m_sceneObjects = sceneObjects; |
70 | m_terrainModule = terrainModule; | 72 | m_terrainModule = terrainModule; |
71 | m_serialiser = serialiser; | 73 | m_serialiser = serialiser; |
72 | m_scene = scene; | 74 | m_scene = scene; |
73 | m_saveStream = saveStream; | 75 | m_saveStream = saveStream; |
76 | m_requestId = requestId; | ||
74 | } | 77 | } |
75 | 78 | ||
76 | protected internal void ReceivedAllAssets( | 79 | protected internal void ReceivedAllAssets( |
@@ -140,7 +143,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
140 | 143 | ||
141 | m_log.InfoFormat("[ARCHIVER]: Wrote out OpenSimulator archive for {0}", m_scene.RegionInfo.RegionName); | 144 | m_log.InfoFormat("[ARCHIVER]: Wrote out OpenSimulator archive for {0}", m_scene.RegionInfo.RegionName); |
142 | 145 | ||
143 | m_scene.EventManager.TriggerOarFileSaved(String.Empty); | 146 | m_scene.EventManager.TriggerOarFileSaved(m_requestId, String.Empty); |
144 | } | 147 | } |
145 | 148 | ||
146 | /// <summary> | 149 | /// <summary> |
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs index accf7e4..a6ad24c 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs | |||
@@ -50,14 +50,16 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
50 | 50 | ||
51 | protected Scene m_scene; | 51 | protected Scene m_scene; |
52 | protected Stream m_saveStream; | 52 | protected Stream m_saveStream; |
53 | protected Guid m_requestId; | ||
53 | 54 | ||
54 | /// <summary> | 55 | /// <summary> |
55 | /// Constructor | 56 | /// Constructor |
56 | /// </summary> | 57 | /// </summary> |
57 | public ArchiveWriteRequestPreparation(Scene scene, string savePath) | 58 | public ArchiveWriteRequestPreparation(Scene scene, string savePath, Guid requestId) |
58 | { | 59 | { |
59 | m_scene = scene; | 60 | m_scene = scene; |
60 | m_saveStream = new GZipStream(new FileStream(savePath, FileMode.Create), CompressionMode.Compress); | 61 | m_saveStream = new GZipStream(new FileStream(savePath, FileMode.Create), CompressionMode.Compress); |
62 | m_requestId = requestId; | ||
61 | } | 63 | } |
62 | 64 | ||
63 | /// <summary> | 65 | /// <summary> |
@@ -65,10 +67,12 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
65 | /// </summary> | 67 | /// </summary> |
66 | /// <param name="scene"></param> | 68 | /// <param name="scene"></param> |
67 | /// <param name="saveStream">The stream to which to save data.</param> | 69 | /// <param name="saveStream">The stream to which to save data.</param> |
68 | public ArchiveWriteRequestPreparation(Scene scene, Stream saveStream) | 70 | /// <param name="requestId">The id associated with this request</param> |
71 | public ArchiveWriteRequestPreparation(Scene scene, Stream saveStream, Guid requestId) | ||
69 | { | 72 | { |
70 | m_scene = scene; | 73 | m_scene = scene; |
71 | m_saveStream = saveStream; | 74 | m_saveStream = saveStream; |
75 | m_requestId = requestId; | ||
72 | } | 76 | } |
73 | 77 | ||
74 | /// <summary> | 78 | /// <summary> |
@@ -129,7 +133,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
129 | m_scene.RequestModuleInterface<ITerrainModule>(), | 133 | m_scene.RequestModuleInterface<ITerrainModule>(), |
130 | m_scene.RequestModuleInterface<IRegionSerialiserModule>(), | 134 | m_scene.RequestModuleInterface<IRegionSerialiserModule>(), |
131 | m_scene, | 135 | m_scene, |
132 | m_saveStream); | 136 | m_saveStream, |
137 | m_requestId); | ||
133 | 138 | ||
134 | new AssetsRequest(assetUuids.Keys, m_scene.CommsManager.AssetCache, awre.ReceivedAllAssets).Execute(); | 139 | new AssetsRequest(assetUuids.Keys, m_scene.CommsManager.AssetCache, awre.ReceivedAllAssets).Execute(); |
135 | } | 140 | } |
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs index dd67027..b6e2d31 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs | |||
@@ -25,6 +25,7 @@ | |||
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.IO; | 29 | using System.IO; |
29 | using System.Reflection; | 30 | using System.Reflection; |
30 | using log4net; | 31 | using log4net; |
@@ -63,38 +64,48 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
63 | 64 | ||
64 | public void ArchiveRegion(string savePath) | 65 | public void ArchiveRegion(string savePath) |
65 | { | 66 | { |
67 | ArchiveRegion(savePath, Guid.Empty); | ||
68 | } | ||
69 | |||
70 | public void ArchiveRegion(string savePath, Guid requestId) | ||
71 | { | ||
66 | m_log.InfoFormat( | 72 | m_log.InfoFormat( |
67 | "[ARCHIVER]: Writing archive for region {0} to {1}", m_scene.RegionInfo.RegionName, savePath); | 73 | "[ARCHIVER]: Writing archive for region {0} to {1}", m_scene.RegionInfo.RegionName, savePath); |
68 | 74 | ||
69 | new ArchiveWriteRequestPreparation(m_scene, savePath).ArchiveRegion(); | 75 | new ArchiveWriteRequestPreparation(m_scene, savePath, requestId).ArchiveRegion(); |
70 | } | 76 | } |
71 | 77 | ||
72 | public void ArchiveRegion(Stream saveStream) | 78 | public void ArchiveRegion(Stream saveStream) |
73 | { | 79 | { |
74 | new ArchiveWriteRequestPreparation(m_scene, saveStream).ArchiveRegion(); | 80 | ArchiveRegion(saveStream, Guid.Empty); |
75 | } | 81 | } |
82 | |||
83 | public void ArchiveRegion(Stream saveStream, Guid requestId) | ||
84 | { | ||
85 | new ArchiveWriteRequestPreparation(m_scene, saveStream, requestId).ArchiveRegion(); | ||
86 | } | ||
76 | 87 | ||
77 | public void DearchiveRegion(string loadPath) | 88 | public void DearchiveRegion(string loadPath) |
78 | { | 89 | { |
79 | DearchiveRegion(loadPath, false); | 90 | DearchiveRegion(loadPath, false, Guid.Empty); |
80 | } | 91 | } |
81 | 92 | ||
82 | public void DearchiveRegion(string loadPath, bool merge) | 93 | public void DearchiveRegion(string loadPath, bool merge, Guid requestId) |
83 | { | 94 | { |
84 | m_log.InfoFormat( | 95 | m_log.InfoFormat( |
85 | "[ARCHIVER]: Loading archive to region {0} from {1}", m_scene.RegionInfo.RegionName, loadPath); | 96 | "[ARCHIVER]: Loading archive to region {0} from {1}", m_scene.RegionInfo.RegionName, loadPath); |
86 | 97 | ||
87 | new ArchiveReadRequest(m_scene, loadPath, merge).DearchiveRegion(); | 98 | new ArchiveReadRequest(m_scene, loadPath, merge, requestId).DearchiveRegion(); |
88 | } | 99 | } |
89 | 100 | ||
90 | public void DearchiveRegion(Stream loadStream) | 101 | public void DearchiveRegion(Stream loadStream) |
91 | { | 102 | { |
92 | DearchiveRegion(loadStream, false); | 103 | DearchiveRegion(loadStream, false, Guid.Empty); |
93 | } | 104 | } |
94 | 105 | ||
95 | public void DearchiveRegion(Stream loadStream, bool merge) | 106 | public void DearchiveRegion(Stream loadStream, bool merge, Guid requestId) |
96 | { | 107 | { |
97 | new ArchiveReadRequest(m_scene, loadStream, merge).DearchiveRegion(); | 108 | new ArchiveReadRequest(m_scene, loadStream, merge, requestId).DearchiveRegion(); |
98 | } | 109 | } |
99 | } | 110 | } |
100 | } | 111 | } |
diff --git a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs index 165a607..3ffabbd 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs | |||
@@ -47,10 +47,13 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests | |||
47 | [TestFixture, LongRunning] | 47 | [TestFixture, LongRunning] |
48 | public class ArchiverTests | 48 | public class ArchiverTests |
49 | { | 49 | { |
50 | private void SaveCompleted(string errorMessage) | 50 | private Guid m_lastRequestId; |
51 | |||
52 | private void SaveCompleted(Guid requestId, string errorMessage) | ||
51 | { | 53 | { |
52 | lock (this) | 54 | lock (this) |
53 | { | 55 | { |
56 | m_lastRequestId = requestId; | ||
54 | System.Console.WriteLine("About to pulse ArchiverTests"); | 57 | System.Console.WriteLine("About to pulse ArchiverTests"); |
55 | Monitor.PulseAll(this); | 58 | Monitor.PulseAll(this); |
56 | } | 59 | } |
@@ -112,15 +115,19 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests | |||
112 | MemoryStream archiveWriteStream = new MemoryStream(); | 115 | MemoryStream archiveWriteStream = new MemoryStream(); |
113 | scene.EventManager.OnOarFileSaved += SaveCompleted; | 116 | scene.EventManager.OnOarFileSaved += SaveCompleted; |
114 | 117 | ||
118 | Guid requestId = new Guid("00000000-0000-0000-0000-808080808080"); | ||
119 | |||
115 | lock (this) | 120 | lock (this) |
116 | { | 121 | { |
117 | archiverModule.ArchiveRegion(archiveWriteStream); | 122 | archiverModule.ArchiveRegion(archiveWriteStream, requestId); |
118 | AssetServerBase assetServer = (AssetServerBase)scene.CommsManager.AssetCache.AssetServer; | 123 | AssetServerBase assetServer = (AssetServerBase)scene.CommsManager.AssetCache.AssetServer; |
119 | while (assetServer.HasWaitingRequests()) | 124 | while (assetServer.HasWaitingRequests()) |
120 | assetServer.ProcessNextRequest(); | 125 | assetServer.ProcessNextRequest(); |
121 | 126 | ||
122 | Monitor.Wait(this, 60000); | 127 | Monitor.Wait(this, 60000); |
123 | } | 128 | } |
129 | |||
130 | Assert.That(m_lastRequestId, Is.EqualTo(requestId)); | ||
124 | 131 | ||
125 | byte[] archive = archiveWriteStream.ToArray(); | 132 | byte[] archive = archiveWriteStream.ToArray(); |
126 | MemoryStream archiveReadStream = new MemoryStream(archive); | 133 | MemoryStream archiveReadStream = new MemoryStream(archive); |
@@ -303,7 +310,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests | |||
303 | byte[] archive = archiveWriteStream.ToArray(); | 310 | byte[] archive = archiveWriteStream.ToArray(); |
304 | MemoryStream archiveReadStream = new MemoryStream(archive); | 311 | MemoryStream archiveReadStream = new MemoryStream(archive); |
305 | 312 | ||
306 | archiverModule.DearchiveRegion(archiveReadStream, true); | 313 | archiverModule.DearchiveRegion(archiveReadStream, true, Guid.Empty); |
307 | 314 | ||
308 | SceneObjectPart object1Existing = scene.GetSceneObjectPart(part1Name); | 315 | SceneObjectPart object1Existing = scene.GetSceneObjectPart(part1Name); |
309 | Assert.That(object1Existing, Is.Not.Null, "object1 was not present after merge"); | 316 | Assert.That(object1Existing, Is.Not.Null, "object1 was not present after merge"); |
diff --git a/OpenSim/Region/Framework/Interfaces/IRegionArchiverModule.cs b/OpenSim/Region/Framework/Interfaces/IRegionArchiverModule.cs index 601b83e..530fb79 100644 --- a/OpenSim/Region/Framework/Interfaces/IRegionArchiverModule.cs +++ b/OpenSim/Region/Framework/Interfaces/IRegionArchiverModule.cs | |||
@@ -25,6 +25,7 @@ | |||
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.IO; | 29 | using System.IO; |
29 | 30 | ||
30 | namespace OpenSim.Region.Framework.Interfaces | 31 | namespace OpenSim.Region.Framework.Interfaces |
@@ -43,6 +44,17 @@ namespace OpenSim.Region.Framework.Interfaces | |||
43 | /// | 44 | /// |
44 | /// <param name="savePath"></param> | 45 | /// <param name="savePath"></param> |
45 | void ArchiveRegion(string savePath); | 46 | void ArchiveRegion(string savePath); |
47 | |||
48 | /// <summary> | ||
49 | /// Archive the region to the given path | ||
50 | /// </summary> | ||
51 | /// | ||
52 | /// This method occurs asynchronously. If you want notification of when it has completed then subscribe to | ||
53 | /// the EventManager.OnOarFileSaved event. | ||
54 | /// | ||
55 | /// <param name="savePath"></param> | ||
56 | /// <param name="requestId">If supplied, this request Id is later returned in the saved event</param> | ||
57 | void ArchiveRegion(string savePath, Guid requestId); | ||
46 | 58 | ||
47 | /// <summary> | 59 | /// <summary> |
48 | /// Archive the region to a stream. | 60 | /// Archive the region to a stream. |
@@ -52,7 +64,8 @@ namespace OpenSim.Region.Framework.Interfaces | |||
52 | /// the EventManager.OnOarFileSaved event. | 64 | /// the EventManager.OnOarFileSaved event. |
53 | /// | 65 | /// |
54 | /// <param name="saveStream"></param> | 66 | /// <param name="saveStream"></param> |
55 | void ArchiveRegion(Stream saveStream); | 67 | /// <param name="requestId">If supplied, this request Id is later returned in the saved event</param> |
68 | void ArchiveRegion(Stream saveStream, Guid requestId); | ||
56 | 69 | ||
57 | /// <summary> | 70 | /// <summary> |
58 | /// Dearchive the given region archive. This replaces the existing scene. | 71 | /// Dearchive the given region archive. This replaces the existing scene. |
@@ -74,7 +87,8 @@ namespace OpenSim.Region.Framework.Interfaces | |||
74 | /// If true, the loaded region merges with the existing one rather than replacing it. Any terrain or region | 87 | /// If true, the loaded region merges with the existing one rather than replacing it. Any terrain or region |
75 | /// settings in the archive will be ignored. | 88 | /// settings in the archive will be ignored. |
76 | /// </param> | 89 | /// </param> |
77 | void DearchiveRegion(string loadPath, bool merge); | 90 | /// <param name="requestId">If supplied, this request Id is later returned in the saved event</param> |
91 | void DearchiveRegion(string loadPath, bool merge, Guid requestId); | ||
78 | 92 | ||
79 | /// <summary> | 93 | /// <summary> |
80 | /// Dearchive a region from a stream. This replaces the existing scene. | 94 | /// Dearchive a region from a stream. This replaces the existing scene. |
@@ -95,7 +109,8 @@ namespace OpenSim.Region.Framework.Interfaces | |||
95 | /// <param name="merge"> | 109 | /// <param name="merge"> |
96 | /// If true, the loaded region merges with the existing one rather than replacing it. Any terrain or region | 110 | /// If true, the loaded region merges with the existing one rather than replacing it. Any terrain or region |
97 | /// settings in the archive will be ignored. | 111 | /// settings in the archive will be ignored. |
98 | /// </param> | 112 | /// </param> |
99 | void DearchiveRegion(Stream loadStream, bool merge); | 113 | /// <param name="requestId">If supplied, this request Id is later returned in the saved event</param> |
114 | void DearchiveRegion(Stream loadStream, bool merge, Guid requestId); | ||
100 | } | 115 | } |
101 | } | 116 | } |
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs index 7496af0..469f139 100644 --- a/OpenSim/Region/Framework/Scenes/EventManager.cs +++ b/OpenSim/Region/Framework/Scenes/EventManager.cs | |||
@@ -279,14 +279,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
279 | /// the scripts may not have started yet | 279 | /// the scripts may not have started yet |
280 | /// Message is non empty string if there were problems loading the oar file | 280 | /// Message is non empty string if there were problems loading the oar file |
281 | /// </summary> | 281 | /// </summary> |
282 | public delegate void OarFileLoaded(string message); | 282 | public delegate void OarFileLoaded(Guid guid, string message); |
283 | public event OarFileLoaded OnOarFileLoaded; | 283 | public event OarFileLoaded OnOarFileLoaded; |
284 | 284 | ||
285 | /// <summary> | 285 | /// <summary> |
286 | /// Called when an oar file has finished saving | 286 | /// Called when an oar file has finished saving |
287 | /// Message is non empty string if there were problems saving the oar file | 287 | /// Message is non empty string if there were problems saving the oar file |
288 | /// If a guid was supplied on the original call to identify, the request, this is returned. Otherwise | ||
289 | /// Guid.Empty is returned. | ||
288 | /// </summary> | 290 | /// </summary> |
289 | public delegate void OarFileSaved(string message); | 291 | public delegate void OarFileSaved(Guid guid, string message); |
290 | public event OarFileSaved OnOarFileSaved; | 292 | public event OarFileSaved OnOarFileSaved; |
291 | 293 | ||
292 | /// <summary> | 294 | /// <summary> |
@@ -968,18 +970,18 @@ namespace OpenSim.Region.Framework.Scenes | |||
968 | return 6; | 970 | return 6; |
969 | } | 971 | } |
970 | 972 | ||
971 | public void TriggerOarFileLoaded(string message) | 973 | public void TriggerOarFileLoaded(Guid requestId, string message) |
972 | { | 974 | { |
973 | handlerOarFileLoaded = OnOarFileLoaded; | 975 | handlerOarFileLoaded = OnOarFileLoaded; |
974 | if (handlerOarFileLoaded != null) | 976 | if (handlerOarFileLoaded != null) |
975 | handlerOarFileLoaded(message); | 977 | handlerOarFileLoaded(requestId, message); |
976 | } | 978 | } |
977 | 979 | ||
978 | public void TriggerOarFileSaved(string message) | 980 | public void TriggerOarFileSaved(Guid requestId, string message) |
979 | { | 981 | { |
980 | handlerOarFileSaved = OnOarFileSaved; | 982 | handlerOarFileSaved = OnOarFileSaved; |
981 | if (handlerOarFileSaved != null) | 983 | if (handlerOarFileSaved != null) |
982 | handlerOarFileSaved(message); | 984 | handlerOarFileSaved(requestId, message); |
983 | } | 985 | } |
984 | 986 | ||
985 | public void TriggerEmptyScriptCompileQueue(int numScriptsFailed, string message) | 987 | public void TriggerEmptyScriptCompileQueue(int numScriptsFailed, string message) |
diff --git a/OpenSim/Region/OptionalModules/Scripting/RegionReady/RegionReady.cs b/OpenSim/Region/OptionalModules/Scripting/RegionReady/RegionReady.cs index 6035712..4f57470 100644 --- a/OpenSim/Region/OptionalModules/Scripting/RegionReady/RegionReady.cs +++ b/OpenSim/Region/OptionalModules/Scripting/RegionReady/RegionReady.cs | |||
@@ -76,13 +76,13 @@ namespace OpenSim.Region.CoreModules.Scripting.RegionReady | |||
76 | { | 76 | { |
77 | if (m_enabled) | 77 | if (m_enabled) |
78 | { | 78 | { |
79 | m_log.Info("[RegionReady] Enabled"); | 79 | m_log.Info("[RegionReady]: Enabled"); |
80 | m_scene.EventManager.OnEmptyScriptCompileQueue += new EventManager.EmptyScriptCompileQueue(OnEmptyScriptCompileQueue); | 80 | m_scene.EventManager.OnEmptyScriptCompileQueue += new EventManager.EmptyScriptCompileQueue(OnEmptyScriptCompileQueue); |
81 | m_scene.EventManager.OnOarFileLoaded += new EventManager.OarFileLoaded(OnOarFileLoaded); | 81 | m_scene.EventManager.OnOarFileLoaded += new EventManager.OarFileLoaded(OnOarFileLoaded); |
82 | } | 82 | } |
83 | else | 83 | else |
84 | { | 84 | { |
85 | m_log.Info("[RegionReady] Disabled"); | 85 | m_log.Info("[RegionReady]: Disabled"); |
86 | } | 86 | } |
87 | } | 87 | } |
88 | 88 | ||
@@ -129,20 +129,20 @@ namespace OpenSim.Region.CoreModules.Scripting.RegionReady | |||
129 | c.Sender = null; | 129 | c.Sender = null; |
130 | c.SenderUUID = UUID.Zero; | 130 | c.SenderUUID = UUID.Zero; |
131 | 131 | ||
132 | m_log.InfoFormat("[RegionReady] Region \"{0}\" is ready: \"{1}\" on channel {2}", | 132 | m_log.InfoFormat("[RegionReady]: Region \"{0}\" is ready: \"{1}\" on channel {2}", |
133 | m_scene.RegionInfo.RegionName, c.Message, m_channelNotify); | 133 | m_scene.RegionInfo.RegionName, c.Message, m_channelNotify); |
134 | m_scene.EventManager.TriggerOnChatBroadcast(this, c); | 134 | m_scene.EventManager.TriggerOnChatBroadcast(this, c); |
135 | } | 135 | } |
136 | } | 136 | } |
137 | 137 | ||
138 | void OnOarFileLoaded(string message) | 138 | void OnOarFileLoaded(Guid requestId, string message) |
139 | { | 139 | { |
140 | m_oarFileLoading = true; | 140 | m_oarFileLoading = true; |
141 | if (message==String.Empty) | 141 | if (message==String.Empty) |
142 | { | 142 | { |
143 | m_lastOarLoadedOk = true; | 143 | m_lastOarLoadedOk = true; |
144 | } else { | 144 | } else { |
145 | m_log.InfoFormat("[RegionReady] Oar file load errors: {0}", message); | 145 | m_log.InfoFormat("[RegionReady]: Oar file load errors: {0}", message); |
146 | m_lastOarLoadedOk = false; | 146 | m_lastOarLoadedOk = false; |
147 | } | 147 | } |
148 | } | 148 | } |