From 894bdca05f2d4d3786cdb8b36b6143f4422958f0 Mon Sep 17 00:00:00 2001 From: Krishna Vishal Date: Tue, 8 Jul 2025 14:36:28 +0530 Subject: [PATCH] refactor: change ImmutableRecord payload to Value for compatibility --- core/types.rs | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/core/types.rs b/core/types.rs index 4041a3793..55a1b4aad 100644 --- a/core/types.rs +++ b/core/types.rs @@ -853,7 +853,7 @@ impl<'a> AppendWriter<'a> { impl ImmutableRecord { pub fn new(payload_capacity: usize) -> Self { Self { - payload: Vec::with_capacity(payload_capacity), + payload: Value::Blob(Vec::with_capacity(payload_capacity)), } } @@ -975,22 +975,39 @@ impl ImmutableRecord { } writer.assert_finish_capacity(); + Self { payload: Value::Blob(buf), + } + } + + pub fn as_blob(&self) -> &Vec { + match &self.payload { + Value::Blob(b) => b, + _ => panic!("payload must be a blob"), + } + } + + pub fn as_blob_mut(&mut self) -> &mut Vec { + match &mut self.payload { + Value::Blob(b) => b, + _ => panic!("payload must be a blob"), + } } pub fn start_serialization(&mut self, payload: &[u8]) { - self.payload.as_blob_mut().extend_from_slice(payload); + self.as_blob_mut().extend_from_slice(payload); } pub fn invalidate(&mut self) { - self.payload.as_blob_mut().clear(); } + self.as_blob_mut().clear(); + } pub fn is_invalidated(&self) -> bool { - self.payload.as_blob_mut.is_empty() && self.header_offsets.is_empty() + self.as_blob().is_empty() } pub fn get_payload(&self) -> &[u8] { - &self.payload.as_blob() + self.as_blob() } // TODO: its probably better to not instantiate the RecordCurosr. Instead do the deserialization