diff options
author | Justin Clark-Casey (justincc) | 2011-05-26 02:22:52 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2011-05-26 02:22:52 +0100 |
commit | 3270f4353e0a2bded9361a72526ba673e6266cc1 (patch) | |
tree | 6de02c29ee9e2008f286c815ebdba94f135233a7 /OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs | |
parent | Bump OAR file format version up to 0.7 for this development cycle. (diff) | |
download | opensim-SC_OLD-3270f4353e0a2bded9361a72526ba673e6266cc1.zip opensim-SC_OLD-3270f4353e0a2bded9361a72526ba673e6266cc1.tar.gz opensim-SC_OLD-3270f4353e0a2bded9361a72526ba673e6266cc1.tar.bz2 opensim-SC_OLD-3270f4353e0a2bded9361a72526ba673e6266cc1.tar.xz |
Add --noassets option for "save iar"
Like "save oar", this saves an iar without assets
This can be useful for backup when you know the required assets will still be present (e.g. you're backing up the assets db separately).
This also bumps the iar format version to 0.3 and 1.2 respectively.
0.3 is backward compatible with previous opensim versions
1.2 is used if the --profile switch is specified. It is only compatible with 0.7.1 presently.
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs | 45 |
1 files changed, 35 insertions, 10 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs index c039b5a..b5272ad 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs | |||
@@ -46,6 +46,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
46 | { | 46 | { |
47 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 47 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
48 | 48 | ||
49 | /// <summary> | ||
50 | /// Determine whether this archive will save assets. Default is true. | ||
51 | /// </summary> | ||
52 | public bool SaveAssets { get; set; } | ||
53 | |||
49 | /// <value> | 54 | /// <value> |
50 | /// Used to select all inventory nodes in a folder but not the folder itself | 55 | /// Used to select all inventory nodes in a folder but not the folder itself |
51 | /// </value> | 56 | /// </value> |
@@ -112,6 +117,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
112 | m_invPath = invPath; | 117 | m_invPath = invPath; |
113 | m_saveStream = saveStream; | 118 | m_saveStream = saveStream; |
114 | m_assetGatherer = new UuidGatherer(m_scene.AssetService); | 119 | m_assetGatherer = new UuidGatherer(m_scene.AssetService); |
120 | |||
121 | SaveAssets = true; | ||
115 | } | 122 | } |
116 | 123 | ||
117 | protected void ReceivedAllAssets(ICollection<UUID> assetsFoundUuids, ICollection<UUID> assetsNotFoundUuids) | 124 | protected void ReceivedAllAssets(ICollection<UUID> assetsFoundUuids, ICollection<UUID> assetsNotFoundUuids) |
@@ -150,7 +157,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
150 | string serialization = UserInventoryItemSerializer.Serialize(inventoryItem, options, userAccountService); | 157 | string serialization = UserInventoryItemSerializer.Serialize(inventoryItem, options, userAccountService); |
151 | m_archiveWriter.WriteFile(filename, serialization); | 158 | m_archiveWriter.WriteFile(filename, serialization); |
152 | 159 | ||
153 | m_assetGatherer.GatherAssetUuids(inventoryItem.AssetID, (AssetType)inventoryItem.AssetType, m_assetUuids); | 160 | if (SaveAssets) |
161 | m_assetGatherer.GatherAssetUuids(inventoryItem.AssetID, (AssetType)inventoryItem.AssetType, m_assetUuids); | ||
154 | } | 162 | } |
155 | 163 | ||
156 | /// <summary> | 164 | /// <summary> |
@@ -195,6 +203,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
195 | /// </summary> | 203 | /// </summary> |
196 | public void Execute(Dictionary<string, object> options, IUserAccountService userAccountService) | 204 | public void Execute(Dictionary<string, object> options, IUserAccountService userAccountService) |
197 | { | 205 | { |
206 | if (options.ContainsKey("noassets") && (bool)options["noassets"]) | ||
207 | SaveAssets = false; | ||
208 | |||
198 | try | 209 | try |
199 | { | 210 | { |
200 | InventoryFolderBase inventoryFolder = null; | 211 | InventoryFolderBase inventoryFolder = null; |
@@ -285,12 +296,23 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
285 | 296 | ||
286 | // Don't put all this profile information into the archive right now. | 297 | // Don't put all this profile information into the archive right now. |
287 | //SaveUsers(); | 298 | //SaveUsers(); |
288 | 299 | ||
289 | new AssetsRequest( | 300 | if (SaveAssets) |
290 | new AssetsArchiver(m_archiveWriter), | 301 | { |
291 | m_assetUuids, m_scene.AssetService, | 302 | m_log.DebugFormat("[INVENTORY ARCHIVER]: Saving {0} assets for items", m_assetUuids.Count); |
292 | m_scene.UserAccountService, m_scene.RegionInfo.ScopeID, | 303 | |
293 | options, ReceivedAllAssets).Execute(); | 304 | new AssetsRequest( |
305 | new AssetsArchiver(m_archiveWriter), | ||
306 | m_assetUuids, m_scene.AssetService, | ||
307 | m_scene.UserAccountService, m_scene.RegionInfo.ScopeID, | ||
308 | options, ReceivedAllAssets).Execute(); | ||
309 | } | ||
310 | else | ||
311 | { | ||
312 | m_log.DebugFormat("[INVENTORY ARCHIVER]: Not saving assets since --noassets was specified"); | ||
313 | |||
314 | ReceivedAllAssets(new List<UUID>(), new List<UUID>()); | ||
315 | } | ||
294 | } | 316 | } |
295 | catch (Exception) | 317 | catch (Exception) |
296 | { | 318 | { |
@@ -387,19 +409,19 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
387 | /// </summary> | 409 | /// </summary> |
388 | /// <param name="options"></param> | 410 | /// <param name="options"></param> |
389 | /// <returns></returns> | 411 | /// <returns></returns> |
390 | public static string CreateControlFile(Dictionary<string, object> options) | 412 | public string CreateControlFile(Dictionary<string, object> options) |
391 | { | 413 | { |
392 | int majorVersion, minorVersion; | 414 | int majorVersion, minorVersion; |
393 | 415 | ||
394 | if (options.ContainsKey("profile")) | 416 | if (options.ContainsKey("profile")) |
395 | { | 417 | { |
396 | majorVersion = 1; | 418 | majorVersion = 1; |
397 | minorVersion = 1; | 419 | minorVersion = 2; |
398 | } | 420 | } |
399 | else | 421 | else |
400 | { | 422 | { |
401 | majorVersion = 0; | 423 | majorVersion = 0; |
402 | minorVersion = 2; | 424 | minorVersion = 3; |
403 | } | 425 | } |
404 | 426 | ||
405 | m_log.InfoFormat("[INVENTORY ARCHIVER]: Creating version {0}.{1} IAR", majorVersion, minorVersion); | 427 | m_log.InfoFormat("[INVENTORY ARCHIVER]: Creating version {0}.{1} IAR", majorVersion, minorVersion); |
@@ -411,6 +433,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
411 | xtw.WriteStartElement("archive"); | 433 | xtw.WriteStartElement("archive"); |
412 | xtw.WriteAttributeString("major_version", majorVersion.ToString()); | 434 | xtw.WriteAttributeString("major_version", majorVersion.ToString()); |
413 | xtw.WriteAttributeString("minor_version", minorVersion.ToString()); | 435 | xtw.WriteAttributeString("minor_version", minorVersion.ToString()); |
436 | |||
437 | xtw.WriteElementString("assets_included", SaveAssets.ToString()); | ||
438 | |||
414 | xtw.WriteEndElement(); | 439 | xtw.WriteEndElement(); |
415 | 440 | ||
416 | xtw.Flush(); | 441 | xtw.Flush(); |