aboutsummaryrefslogtreecommitdiffstats
path: root/src/common.rs
diff options
context:
space:
mode:
authorJan Tuomi <jan@jantuomi.fi>2024-10-03 09:54:02 +0200
committerJan Tuomi <jan@jantuomi.fi>2024-10-03 10:11:43 +0200
commite72919ec2b089c5d61b1db63d32a266e13f3b40f (patch)
tree728960e8f900e17ffbf0a9a716eb3083ecda0d09 /src/common.rs
parent8dce4fbbaaf373a5a6c6b02e311a7d8f25cf66c3 (diff)
Implement forward log reader, rebuild memtable at init
Diffstat (limited to 'src/common.rs')
-rw-r--r--src/common.rs25
1 files changed, 22 insertions, 3 deletions
diff --git a/src/common.rs b/src/common.rs
index f7aa755..4922c73 100644
--- a/src/common.rs
+++ b/src/common.rs
@@ -12,9 +12,28 @@ pub const ACTIVE_LOG_FILENAME: &str = "db";
pub const DEFAULT_READ_BUF_SIZE: usize = 1024 * 1024; // 1 MB
pub const FIELD_SEPARATOR: u8 = b'\x1C';
pub const ESCAPE_CHARACTER: u8 = b'\x1D';
-pub const SEQ_RECORD_SEP: &[u8] = &[FIELD_SEPARATOR, FIELD_SEPARATOR, ESCAPE_CHARACTER];
-pub const SEQ_LIT_ESCAPE: &[u8] = &[ESCAPE_CHARACTER, ESCAPE_CHARACTER, ESCAPE_CHARACTER];
-pub const SEQ_LIT_FIELD_SEP: &[u8] = &[ESCAPE_CHARACTER, FIELD_SEPARATOR, ESCAPE_CHARACTER];
+
+// Special sequences. Note: these must have the same length!
+// Since the log is read both forwards and backwards, we must have a signal
+// character (ESCAPE_CHARACTER) on both sides of the special sequence.
+pub const SEQ_RECORD_SEP: &[u8] = &[
+ ESCAPE_CHARACTER,
+ FIELD_SEPARATOR,
+ FIELD_SEPARATOR,
+ ESCAPE_CHARACTER,
+];
+pub const SEQ_LIT_ESCAPE: &[u8] = &[
+ ESCAPE_CHARACTER,
+ ESCAPE_CHARACTER,
+ ESCAPE_CHARACTER,
+ ESCAPE_CHARACTER,
+];
+pub const SEQ_LIT_FIELD_SEP: &[u8] = &[
+ ESCAPE_CHARACTER,
+ ESCAPE_CHARACTER,
+ FIELD_SEPARATOR,
+ ESCAPE_CHARACTER,
+];
#[derive(Debug, Eq, PartialEq)]
pub enum SpecialSequence {