Add a footer in FileEncoder and check for it in MemDecoder
This commit is contained in:
parent
39e02f1bd1
commit
95150d7246
16 changed files with 115 additions and 52 deletions
|
@ -182,15 +182,13 @@ impl SerializedDepGraph {
|
|||
pub fn decode<D: Deps>(d: &mut MemDecoder<'_>) -> Arc<SerializedDepGraph> {
|
||||
// The last 16 bytes are the node count and edge count.
|
||||
debug!("position: {:?}", d.position());
|
||||
let (node_count, edge_count, graph_size) =
|
||||
d.with_position(d.len() - 3 * IntEncodedWithFixedSize::ENCODED_SIZE, |d| {
|
||||
let (node_count, edge_count) =
|
||||
d.with_position(d.len() - 2 * IntEncodedWithFixedSize::ENCODED_SIZE, |d| {
|
||||
debug!("position: {:?}", d.position());
|
||||
let node_count = IntEncodedWithFixedSize::decode(d).0 as usize;
|
||||
let edge_count = IntEncodedWithFixedSize::decode(d).0 as usize;
|
||||
let graph_size = IntEncodedWithFixedSize::decode(d).0 as usize;
|
||||
(node_count, edge_count, graph_size)
|
||||
(node_count, edge_count)
|
||||
});
|
||||
assert_eq!(d.len(), graph_size);
|
||||
debug!("position: {:?}", d.position());
|
||||
|
||||
debug!(?node_count, ?edge_count);
|
||||
|
@ -606,8 +604,6 @@ impl<D: Deps> EncoderState<D> {
|
|||
debug!("position: {:?}", encoder.position());
|
||||
IntEncodedWithFixedSize(node_count).encode(&mut encoder);
|
||||
IntEncodedWithFixedSize(edge_count).encode(&mut encoder);
|
||||
let graph_size = encoder.position() + IntEncodedWithFixedSize::ENCODED_SIZE;
|
||||
IntEncodedWithFixedSize(graph_size as u64).encode(&mut encoder);
|
||||
debug!("position: {:?}", encoder.position());
|
||||
// Drop the encoder so that nothing is written after the counts.
|
||||
let result = encoder.finish();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue