Fix audit findings for coverage, architecture checks, and XML docs
This commit is contained in:
@@ -29,6 +29,13 @@ public readonly struct CompressedPayloadHeader
|
||||
/// </summary>
|
||||
public uint Checksum { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="CompressedPayloadHeader"/> class.
|
||||
/// </summary>
|
||||
/// <param name="codec">Compression codec used for payload bytes.</param>
|
||||
/// <param name="originalLength">Original uncompressed payload length.</param>
|
||||
/// <param name="compressedLength">Compressed payload length.</param>
|
||||
/// <param name="checksum">CRC32 checksum of compressed payload bytes.</param>
|
||||
public CompressedPayloadHeader(CompressionCodec codec, int originalLength, int compressedLength, uint checksum)
|
||||
{
|
||||
if (originalLength < 0)
|
||||
@@ -42,12 +49,22 @@ public readonly struct CompressedPayloadHeader
|
||||
Checksum = checksum;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create.
|
||||
/// </summary>
|
||||
/// <param name="codec">Compression codec used for payload bytes.</param>
|
||||
/// <param name="originalLength">Original uncompressed payload length.</param>
|
||||
/// <param name="compressedPayload">Compressed payload bytes.</param>
|
||||
public static CompressedPayloadHeader Create(CompressionCodec codec, int originalLength, ReadOnlySpan<byte> compressedPayload)
|
||||
{
|
||||
var checksum = ComputeChecksum(compressedPayload);
|
||||
return new CompressedPayloadHeader(codec, originalLength, compressedPayload.Length, checksum);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Write To.
|
||||
/// </summary>
|
||||
/// <param name="destination">Destination span that receives the serialized header.</param>
|
||||
public void WriteTo(Span<byte> destination)
|
||||
{
|
||||
if (destination.Length < Size)
|
||||
@@ -62,6 +79,10 @@ public readonly struct CompressedPayloadHeader
|
||||
BinaryPrimitives.WriteUInt32LittleEndian(destination.Slice(12, 4), Checksum);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Read From.
|
||||
/// </summary>
|
||||
/// <param name="source">Source span containing a serialized header.</param>
|
||||
public static CompressedPayloadHeader ReadFrom(ReadOnlySpan<byte> source)
|
||||
{
|
||||
if (source.Length < Size)
|
||||
@@ -74,11 +95,19 @@ public readonly struct CompressedPayloadHeader
|
||||
return new CompressedPayloadHeader(codec, originalLength, compressedLength, checksum);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate Checksum.
|
||||
/// </summary>
|
||||
/// <param name="compressedPayload">Compressed payload bytes to validate.</param>
|
||||
public bool ValidateChecksum(ReadOnlySpan<byte> compressedPayload)
|
||||
{
|
||||
return Checksum == ComputeChecksum(compressedPayload);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Compute Checksum.
|
||||
/// </summary>
|
||||
/// <param name="payload">Payload bytes.</param>
|
||||
public static uint ComputeChecksum(ReadOnlySpan<byte> payload) => Crc32Calculator.Compute(payload);
|
||||
|
||||
private static class Crc32Calculator
|
||||
@@ -86,6 +115,10 @@ public readonly struct CompressedPayloadHeader
|
||||
private const uint Polynomial = 0xEDB88320u;
|
||||
private static readonly uint[] Table = CreateTable();
|
||||
|
||||
/// <summary>
|
||||
/// Compute.
|
||||
/// </summary>
|
||||
/// <param name="payload">Payload bytes.</param>
|
||||
public static uint Compute(ReadOnlySpan<byte> payload)
|
||||
{
|
||||
uint crc = 0xFFFFFFFFu;
|
||||
|
||||
Reference in New Issue
Block a user