MCPcopy Create free account
hub / github.com/apache/arrow-rs / read_header

Function read_header

arrow-avro/src/reader/header.rs:31–51  ·  view source on GitHub ↗

Read the Avro file header (magic, metadata, sync marker) from `reader`. On success, returns the parsed [`Header`] and the number of bytes read from `reader`.

(mut reader: R)

Source from the content-addressed store, hash-verified

29///
30/// On success, returns the parsed [`Header`] and the number of bytes read from `reader`.
31pub(crate) fn read_header<R: BufRead>(mut reader: R) -> Result<(Header, u64), AvroError> {
32 let mut decoder = HeaderDecoder::default();
33 let mut position = 0;
34 loop {
35 let buf = reader.fill_buf()?;
36 if buf.is_empty() {
37 break;
38 }
39 let read = buf.len();
40 let decoded = decoder.decode(buf)?;
41 reader.consume(decoded);
42 position += decoded as u64;
43 if decoded != read {
44 break;
45 }
46 }
47 decoder
48 .flush()
49 .map(|header| (header, position))
50 .ok_or_else(|| AvroError::EOF("Unexpected EOF while reading Avro header".to_string()))
51}
52
53#[derive(Debug)]
54enum HeaderDecoderState {

Callers 4

buildMethod · 0.70
load_writer_schema_jsonFunction · 0.70
read_header_infoFunction · 0.70
decode_fileFunction · 0.70

Calls 7

defaultFunction · 0.85
fill_bufMethod · 0.45
is_emptyMethod · 0.45
lenMethod · 0.45
decodeMethod · 0.45
consumeMethod · 0.45
flushMethod · 0.45

Tested by

no test coverage detected