aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2011-05-26 02:22:52 +0100
committerJustin Clark-Casey (justincc)2011-05-26 02:22:52 +0100
commit3270f4353e0a2bded9361a72526ba673e6266cc1 (patch)
tree6de02c29ee9e2008f286c815ebdba94f135233a7 /OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
parentBump OAR file format version up to 0.7 for this development cycle. (diff)
downloadopensim-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 'OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs45
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();