From 0f98903759bedd148c1d823e2beb4aef9e16f7cf Mon Sep 17 00:00:00 2001 From: Yuriy Dupyn <2153100+omedusyo@users.noreply.github.com> Date: Sat, 3 Feb 2024 22:54:55 +0100 Subject: [PATCH] Add file_position to EntryDetailed --- storage_engine/src/cursor.rs | 3 ++- storage_engine/src/entry.rs | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/storage_engine/src/cursor.rs b/storage_engine/src/cursor.rs index 42584b7..b0ea017 100644 --- a/storage_engine/src/cursor.rs +++ b/storage_engine/src/cursor.rs @@ -121,12 +121,13 @@ pub trait CursorWithStoreHeader: PrimitiveCursor { async fn next(&mut self) -> Result>> where T: Decode { + let file_position = self.current_file_position().await?; let Some(entry_header) = self.next_entry_header().await? else { return Ok(None) }; let mut data_bytes: Vec = vec![0; entry_header.size_of_data()]; self.read_bytes(&mut data_bytes).await?; let entry: EntryDetailed = - EntryDetailed::decode(entry_header, self.header().number_of_columns, &mut data_bytes)?; + EntryDetailed::decode(entry_header, file_position, self.header().number_of_columns, &mut data_bytes)?; Ok(Some(entry)) } diff --git a/storage_engine/src/entry.rs b/storage_engine/src/entry.rs index 90d3dca..c628979 100644 --- a/storage_engine/src/entry.rs +++ b/storage_engine/src/entry.rs @@ -1,7 +1,7 @@ use bincode::{Decode, Encode}; use crate::binary_coding::{encode_sequence, encode_sequence_with_sizes, decode_sequence}; -use crate::storage_engine::Result; +use crate::storage_engine::{Result, FilePosition}; use crate::error::{Error, DecodeErrorKind}; use crate::entry_header::{EntryHeader, EntryHeaderWithDataSize}; @@ -14,6 +14,7 @@ pub struct Entry { #[derive(Debug)] pub struct EntryDetailed { pub header: EntryHeaderWithDataSize, + pub file_position: FilePosition, pub data: Vec, } @@ -40,11 +41,11 @@ impl Entry { } impl EntryDetailed { - pub fn decode(header: EntryHeaderWithDataSize, number_of_columns: usize, bytes: &[u8]) -> Result + pub fn decode(header: EntryHeaderWithDataSize, file_position: FilePosition, number_of_columns: usize, bytes: &[u8]) -> Result where T: Decode { let data = decode_sequence::(number_of_columns, bytes) .map_err(|e| Error::DecodeError(DecodeErrorKind::EntryData, e))?; - Ok(EntryDetailed { header, data }) + Ok(EntryDetailed { header, file_position, data }) } }