aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs69
1 files changed, 40 insertions, 29 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
index 367960c..cf4ba91 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
@@ -86,6 +86,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
86 protected bool m_controlFileLoaded; 86 protected bool m_controlFileLoaded;
87 protected bool m_assetsLoaded; 87 protected bool m_assetsLoaded;
88 protected bool m_inventoryNodesLoaded; 88 protected bool m_inventoryNodesLoaded;
89
90 protected int m_successfulAssetRestores;
91 protected int m_failedAssetRestores;
89 92
90 public InventoryArchiveReadRequest( 93 public InventoryArchiveReadRequest(
91 Scene scene, UserAccount userInfo, string invPath, string loadPath, bool merge) 94 Scene scene, UserAccount userInfo, string invPath, string loadPath, bool merge)
@@ -121,8 +124,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
121 try 124 try
122 { 125 {
123 string filePath = "ERROR"; 126 string filePath = "ERROR";
124 int successfulAssetRestores = 0;
125 int failedAssetRestores = 0;
126 int successfulItemRestores = 0; 127 int successfulItemRestores = 0;
127 128
128 HashSet<InventoryNodeBase> loadedNodes = new HashSet<InventoryNodeBase>(); 129 HashSet<InventoryNodeBase> loadedNodes = new HashSet<InventoryNodeBase>();
@@ -154,33 +155,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
154 if (filePath == ArchiveConstants.CONTROL_FILE_PATH) 155 if (filePath == ArchiveConstants.CONTROL_FILE_PATH)
155 { 156 {
156 LoadControlFile(filePath, data); 157 LoadControlFile(filePath, data);
157 m_controlFileLoaded = true; 158 }
158 }
159 else if (filePath.StartsWith(ArchiveConstants.ASSETS_PATH)) 159 else if (filePath.StartsWith(ArchiveConstants.ASSETS_PATH))
160 { 160 {
161 if (!m_controlFileLoaded) 161 LoadAssetFile(filePath, data);
162 throw new Exception(
163 string.Format(
164 "The IAR you are trying to load does not list {0} before {1}. Aborting load",
165 ArchiveConstants.CONTROL_FILE_PATH, ArchiveConstants.ASSETS_PATH));
166
167 if (!m_inventoryNodesLoaded)
168 throw new Exception(
169 string.Format(
170 "The IAR you are trying to load does not list all {0} before {1}. Aborting load",
171 ArchiveConstants.INVENTORY_PATH, ArchiveConstants.ASSETS_PATH));
172
173 if (LoadAsset(filePath, data))
174 successfulAssetRestores++;
175 else
176 failedAssetRestores++;
177
178 if ((successfulAssetRestores) % 50 == 0)
179 m_log.DebugFormat(
180 "[INVENTORY ARCHIVER]: Loaded {0} assets...",
181 successfulAssetRestores);
182
183 m_assetsLoaded = true;
184 } 162 }
185 else if (filePath.StartsWith(ArchiveConstants.INVENTORY_PATH)) 163 else if (filePath.StartsWith(ArchiveConstants.INVENTORY_PATH))
186 { 164 {
@@ -229,7 +207,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
229 207
230 m_log.DebugFormat( 208 m_log.DebugFormat(
231 "[INVENTORY ARCHIVER]: Successfully loaded {0} assets with {1} failures", 209 "[INVENTORY ARCHIVER]: Successfully loaded {0} assets with {1} failures",
232 successfulAssetRestores, failedAssetRestores); 210 m_successfulAssetRestores, m_failedAssetRestores);
233 m_log.InfoFormat("[INVENTORY ARCHIVER]: Successfully loaded {0} items", successfulItemRestores); 211 m_log.InfoFormat("[INVENTORY ARCHIVER]: Successfully loaded {0} items", successfulItemRestores);
234 212
235 return loadedNodes; 213 return loadedNodes;
@@ -566,7 +544,40 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
566 majorVersion, MAX_MAJOR_VERSION)); 544 majorVersion, MAX_MAJOR_VERSION));
567 } 545 }
568 546
569 m_log.InfoFormat("[INVENTORY ARCHIVER]: Loading IAR with version {0}", version); 547 m_controlFileLoaded = true;
548 m_log.InfoFormat("[INVENTORY ARCHIVER]: Loading IAR with version {0}", version);
570 } 549 }
550
551 /// <summary>
552 /// Load asset file
553 /// </summary>
554 /// <param name="path"></param>
555 /// <param name="data"></param>
556 protected void LoadAssetFile(string path, byte[] data)
557 {
558 if (!m_controlFileLoaded)
559 throw new Exception(
560 string.Format(
561 "The IAR you are trying to load does not list {0} before {1}. Aborting load",
562 ArchiveConstants.CONTROL_FILE_PATH, ArchiveConstants.ASSETS_PATH));
563
564 if (!m_inventoryNodesLoaded)
565 throw new Exception(
566 string.Format(
567 "The IAR you are trying to load does not list all {0} before {1}. Aborting load",
568 ArchiveConstants.INVENTORY_PATH, ArchiveConstants.ASSETS_PATH));
569
570 if (LoadAsset(path, data))
571 m_successfulAssetRestores++;
572 else
573 m_failedAssetRestores++;
574
575 if ((m_successfulAssetRestores) % 50 == 0)
576 m_log.DebugFormat(
577 "[INVENTORY ARCHIVER]: Loaded {0} assets...",
578 m_successfulAssetRestores);
579
580 m_assetsLoaded = true;
581 }
571 } 582 }
572} \ No newline at end of file 583} \ No newline at end of file