diff options
Diffstat (limited to 'OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs')
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs | 68 |
1 files changed, 37 insertions, 31 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index 9e76d79..8532d03 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs | |||
@@ -121,45 +121,51 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
121 | 121 | ||
122 | byte[] data; | 122 | byte[] data; |
123 | TarArchiveReader.TarEntryType entryType; | 123 | TarArchiveReader.TarEntryType entryType; |
124 | while ((data = archive.ReadEntry(out filePath, out entryType)) != null) | ||
125 | { | ||
126 | if (filePath.StartsWith(ArchiveConstants.ASSETS_PATH)) | ||
127 | { | ||
128 | if (LoadAsset(filePath, data)) | ||
129 | successfulAssetRestores++; | ||
130 | else | ||
131 | failedAssetRestores++; | ||
132 | 124 | ||
133 | if ((successfulAssetRestores) % 50 == 0) | 125 | try |
134 | m_log.DebugFormat( | 126 | { |
135 | "[INVENTORY ARCHIVER]: Loaded {0} assets...", | 127 | while ((data = archive.ReadEntry(out filePath, out entryType)) != null) |
136 | successfulAssetRestores); | ||
137 | } | ||
138 | else if (filePath.StartsWith(ArchiveConstants.INVENTORY_PATH)) | ||
139 | { | 128 | { |
140 | InventoryFolderBase foundFolder | 129 | if (filePath.StartsWith(ArchiveConstants.ASSETS_PATH)) |
141 | = ReplicateArchivePathToUserInventory( | ||
142 | filePath, TarArchiveReader.TarEntryType.TYPE_DIRECTORY == entryType, | ||
143 | rootDestinationFolder, foldersCreated, nodesLoaded); | ||
144 | |||
145 | if (TarArchiveReader.TarEntryType.TYPE_DIRECTORY != entryType) | ||
146 | { | 130 | { |
147 | InventoryItemBase item = LoadItem(data, foundFolder); | 131 | if (LoadAsset(filePath, data)) |
148 | 132 | successfulAssetRestores++; | |
149 | if (item != null) | 133 | else |
134 | failedAssetRestores++; | ||
135 | |||
136 | if ((successfulAssetRestores) % 50 == 0) | ||
137 | m_log.DebugFormat( | ||
138 | "[INVENTORY ARCHIVER]: Loaded {0} assets...", | ||
139 | successfulAssetRestores); | ||
140 | } | ||
141 | else if (filePath.StartsWith(ArchiveConstants.INVENTORY_PATH)) | ||
142 | { | ||
143 | InventoryFolderBase foundFolder | ||
144 | = ReplicateArchivePathToUserInventory( | ||
145 | filePath, TarArchiveReader.TarEntryType.TYPE_DIRECTORY == entryType, | ||
146 | rootDestinationFolder, foldersCreated, nodesLoaded); | ||
147 | |||
148 | if (TarArchiveReader.TarEntryType.TYPE_DIRECTORY != entryType) | ||
150 | { | 149 | { |
151 | successfulItemRestores++; | 150 | InventoryItemBase item = LoadItem(data, foundFolder); |
152 | 151 | ||
153 | // If we're loading an item directly into the given destination folder then we need to record | 152 | if (item != null) |
154 | // it separately from any loaded root folders | 153 | { |
155 | if (rootDestinationFolder == foundFolder) | 154 | successfulItemRestores++; |
156 | nodesLoaded.Add(item); | 155 | |
156 | // If we're loading an item directly into the given destination folder then we need to record | ||
157 | // it separately from any loaded root folders | ||
158 | if (rootDestinationFolder == foundFolder) | ||
159 | nodesLoaded.Add(item); | ||
160 | } | ||
157 | } | 161 | } |
158 | } | 162 | } |
159 | } | 163 | } |
160 | } | 164 | } |
161 | 165 | finally | |
162 | archive.Close(); | 166 | { |
167 | archive.Close(); | ||
168 | } | ||
163 | 169 | ||
164 | m_log.DebugFormat( | 170 | m_log.DebugFormat( |
165 | "[INVENTORY ARCHIVER]: Successfully loaded {0} assets with {1} failures", | 171 | "[INVENTORY ARCHIVER]: Successfully loaded {0} assets with {1} failures", |