Browse compressed file content

This commit is contained in:
2023-09-05 00:13:24 +02:00
parent 3a29991948
commit b85c19407e
19 changed files with 406 additions and 14 deletions

View File

@@ -28,7 +28,6 @@ public class VirtualDiskContentProvider : SubContentProviderBase, IVirtualDiskCo
var parentItem = await ParentContentProvider.GetItemByNativePathAsync(supportedPath, element.PointInTime);
if (parentItem is not IElement parentElement) return null;
var contentReaderFactory = _contentAccessorFactory.GetContentReaderFactory(parentElement.Provider);
var reader = await contentReaderFactory.CreateContentReaderAsync(parentElement);

View File

@@ -79,7 +79,12 @@ public class VirtualDiskSubContentProvider : IVirtualDiskSubContentProvider
var childFullName = new FullName(childFullNameBase);
var childNativePath = new NativePath(childNativePathBase);
var parent = new AbsolutePath(_timelessContentProvider, pointInTime, childFullName.GetParent()!, AbsolutePathType.Container);
var parent = new AbsolutePath(
_timelessContentProvider,
pointInTime,
childFullName.GetParent()!,
AbsolutePathType.Container
);
var container = discReader.Root;
for (var i = 1; i < pathParts.Length - 1; i++)
@@ -125,7 +130,7 @@ public class VirtualDiskSubContentProvider : IVirtualDiskSubContentProvider
private IContainer CreateContainer(
UdfReader discReader,
DiscDirectoryInfo sourceContainer,
FullName fullname,
FullName fullName,
NativePath nativePath,
IContentProvider parentContentProvider,
AbsolutePath parent,
@@ -137,7 +142,7 @@ public class VirtualDiskSubContentProvider : IVirtualDiskSubContentProvider
var container = new Container(
sourceContainer.Name,
sourceContainer.Name,
fullname,
fullName,
nativePath,
parent,
true,
@@ -159,8 +164,16 @@ public class VirtualDiskSubContentProvider : IVirtualDiskSubContentProvider
{
ThreadPool.QueueUserWorkItem(_ =>
{
LoadChildren(container, sourceContainer, children, pointInTime, exceptions);
discReader.Dispose();
try
{
container.StartLoading();
LoadChildren(container, sourceContainer, children, pointInTime, exceptions);
}
finally
{
discReader.Dispose();
container.StopLoading();
}
});
}