@@ -9,6 +9,7 @@ public sealed class SpanFileTail
9
9
{
10
10
public Protocol . PostScript PostScript { get ; private init ; }
11
11
public Protocol . Footer Footer { get ; private init ; }
12
+ public Protocol . Metadata Metadata { get ; private init ; }
12
13
13
14
public static bool TryRead ( ReadOnlySpan < byte > buffer , out SpanFileTail fileTail , out int additionalBytesRequired )
14
15
{
@@ -36,22 +37,30 @@ public static bool TryRead(ReadOnlySpan<byte> buffer, out SpanFileTail fileTail,
36
37
throw new InvalidDataException ( "Postscript didn't contain magic bytes" ) ;
37
38
38
39
accumulatedLength += ( int ) postScript . FooterLength ;
40
+ int footerStart = buffer . Length - accumulatedLength ;
41
+ accumulatedLength += ( int ) postScript . MetadataLength ;
42
+ int metadataStart = buffer . Length - accumulatedLength ;
43
+
39
44
if ( buffer . Length < accumulatedLength )
40
45
{
41
46
additionalBytesRequired = accumulatedLength - buffer . Length ;
42
47
fileTail = null ;
43
48
return false ;
44
49
}
45
50
46
- int footerStart = buffer . Length - accumulatedLength ;
47
51
var compressedFooter = buffer . Slice ( footerStart , ( int ) postScript . FooterLength ) ;
48
- using var decompressedMemorySequence = new DecompressingMemorySequence ( compressedFooter , postScript . Compression , ( int ) postScript . CompressionBlockSize ) ;
49
- var footer = Serializer . Deserialize < Protocol . Footer > ( decompressedMemorySequence . Sequence ) ;
52
+ using var decompressedFooterSequence = new DecompressingMemorySequence ( compressedFooter , postScript . Compression , ( int ) postScript . CompressionBlockSize ) ;
53
+ var footer = Serializer . Deserialize < Protocol . Footer > ( decompressedFooterSequence . Sequence ) ;
54
+
55
+ var compressedMetadata = buffer . Slice ( metadataStart , ( int ) postScript . MetadataLength ) ;
56
+ using var decompressedMetadataSequence = new DecompressingMemorySequence ( compressedMetadata , postScript . Compression , ( int ) postScript . CompressionBlockSize ) ;
57
+ var metadata = Serializer . Deserialize < Protocol . Metadata > ( decompressedMetadataSequence . Sequence ) ;
50
58
51
59
fileTail = new SpanFileTail
52
60
{
53
61
PostScript = postScript ,
54
- Footer = footer
62
+ Footer = footer ,
63
+ Metadata = metadata
55
64
} ;
56
65
additionalBytesRequired = 0 ;
57
66
return true ;
0 commit comments