Copy from ISO

This commit is contained in:
2023-09-04 18:05:01 +02:00
parent a323edafd3
commit 3a29991948
20 changed files with 241 additions and 48 deletions

View File

@@ -29,4 +29,5 @@ public interface IContentProvider : IContainer, IOnContainerEnter
Task<bool> CanHandlePathAsync(NativePath path);
Task<bool> CanHandlePathAsync(FullName path);
VolumeSizeInfo? GetVolumeSizeInfo(FullName path);
ValueTask<NativePath?> GetSupportedPathPart(NativePath nativePath);
}

View File

@@ -95,5 +95,6 @@ public abstract class ContentProviderBase : IContentProvider
public abstract VolumeSizeInfo? GetVolumeSizeInfo(FullName path);
public IItem WithParent(AbsolutePath parent) => this;
public IItem WithParent(AbsolutePath parent) => this;
public abstract ValueTask<NativePath?> GetSupportedPathPart(NativePath nativePath);
}

View File

@@ -86,6 +86,7 @@ public class RootContentProvider : IRootContentProvider
public Task<bool> CanHandlePathAsync(FullName path) => throw new NotImplementedException();
public VolumeSizeInfo? GetVolumeSizeInfo(FullName path) => null;
public ValueTask<NativePath?> GetSupportedPathPart(NativePath nativePath) => throw new NotImplementedException();
public IItem WithParent(AbsolutePath parent) => this;
}

View File

@@ -6,14 +6,14 @@ namespace FileTime.Core.ContentAccess;
public abstract class SubContentProviderBase : ContentProviderBase
{
private readonly IContentProvider _parentContentProvider;
public IContentProvider ParentContentProvider { get; }
protected SubContentProviderBase(
IContentProvider parentContentProvider,
string name,
ITimelessContentProvider timelessContentProvider) : base(name, timelessContentProvider)
{
_parentContentProvider = parentContentProvider;
ParentContentProvider = parentContentProvider;
}
public override async Task<IItem> GetItemByNativePathAsync(
@@ -22,7 +22,7 @@ public abstract class SubContentProviderBase : ContentProviderBase
bool forceResolve = false,
AbsolutePathType forceResolvePathType = AbsolutePathType.Unknown,
ItemInitializationSettings itemInitializationSettings = default)
=> await _parentContentProvider.GetItemByNativePathAsync(
=> await ParentContentProvider.GetItemByNativePathAsync(
nativePath,
pointInTime,
forceResolve,
@@ -30,17 +30,14 @@ public abstract class SubContentProviderBase : ContentProviderBase
itemInitializationSettings);
public override async ValueTask<NativePath> GetNativePathAsync(FullName fullName)
=> await _parentContentProvider.GetNativePathAsync(fullName);
=> await ParentContentProvider.GetNativePathAsync(fullName);
public override FullName GetFullName(NativePath nativePath)
=> _parentContentProvider.GetFullName(nativePath);
public override async Task<byte[]?> GetContentAsync(IElement element, int? maxLength = null, CancellationToken cancellationToken = default)
=> await _parentContentProvider.GetContentAsync(element, maxLength, cancellationToken);
=> ParentContentProvider.GetFullName(nativePath);
public override async Task<bool> CanHandlePathAsync(NativePath path)
=> await _parentContentProvider.CanHandlePathAsync(path);
=> await ParentContentProvider.CanHandlePathAsync(path);
public override VolumeSizeInfo? GetVolumeSizeInfo(FullName path)
=> _parentContentProvider.GetVolumeSizeInfo(path);
public override async ValueTask<NativePath?> GetSupportedPathPart(NativePath nativePath)
=> await ParentContentProvider.GetSupportedPathPart(nativePath);
}