use sync generator

This commit is contained in:
Adam Hathcock
2026-08-06 08:14:48 +01:00
parent 1ab599a21d
commit 6f497d73bf
4 changed files with 8 additions and 34 deletions

View File

@@ -528,6 +528,7 @@ public static partial class ArchiveFactory
_ => entries.Aggregate(0L, (total, entry) => total + entry.CompressedSize),
};
[Zomp.SyncMethodGenerator.CreateSyncVersion]
private static async ValueTask<(
ZipArchiveInformation? Information,
long DeferredSizeEntryCount
@@ -545,7 +546,9 @@ public static partial class ArchiveFactory
long deferredSizeEntryCount = 0;
foreach (var entry in entries.OfType<ZipArchiveEntry>())
{
#if !SYNC_ONLY
cancellationToken.ThrowIfCancellationRequested();
#endif
var filePart = entry.Parts.OfType<SeekableZipFilePart>().Single();
if (!filePart.HasDeferredSizes)
{

View File

@@ -387,35 +387,6 @@ public static partial class ArchiveFactory
? ArchiveInformationStatus.Complete
: ArchiveInformationStatus.Partial;
private static (
ZipArchiveInformation? Information,
long DeferredSizeEntryCount
) GetZipInformation(bool isZipArchive, IEnumerable<IArchiveEntry> entries)
{
if (!isZipArchive)
{
return (null, 0);
}
long deferredSizeEntryCount = 0;
foreach (var entry in entries.OfType<ZipArchiveEntry>())
{
var filePart = entry.Parts.OfType<SeekableZipFilePart>().Single();
if (!filePart.HasDeferredSizes)
{
continue;
}
var localHeader = filePart.GetRawLocalHeader();
if (localHeader.CompressedSize == 0 && localHeader.UncompressedSize == 0)
{
deferredSizeEntryCount++;
}
}
return (new ZipArchiveInformation(deferredSizeEntryCount > 0), deferredSizeEntryCount);
}
private static (bool IsSolid, long SolidStreamCount) GetSolidInformation(
IArchive archive,
IReadOnlyCollection<IArchiveEntry> entries

View File

@@ -26,6 +26,9 @@ internal partial class SeekableZipFilePart
.GetLocalHeaderAsync(BaseStream, _directoryEntryHeader)
.ConfigureAwait(false);
internal ValueTask<LocalEntryHeader> GetRawLocalHeaderAsync() =>
_headerFactory.GetRawLocalHeaderAsync(BaseStream, _directoryEntryHeader);
[Zomp.SyncMethodGenerator.CreateSyncVersion]
internal async ValueTask<LocalEntryHeader> GetRawLocalHeaderAsync() =>
await _headerFactory
.GetRawLocalHeaderAsync(BaseStream, _directoryEntryHeader)
.ConfigureAwait(false);
}

View File

@@ -22,9 +22,6 @@ internal partial class SeekableZipFilePart : ZipFilePart
_directoryEntryHeader = header;
}
internal LocalEntryHeader GetRawLocalHeader() =>
_headerFactory.GetRawLocalHeader(BaseStream, _directoryEntryHeader);
internal bool HasDeferredSizes =>
FlagUtility.HasFlag(_directoryEntryHeader.Flags, HeaderFlags.UsePostDataDescriptor);