mirror of
https://github.com/mikedilger/chorus.git
synced 2026-05-03 06:51:42 +00:00
store 'events_are_aligned' in lmdb
This commit is contained in:
parent
ea3d66f746
commit
ff4f921e7d
@ -10,6 +10,9 @@ use std::ops::Bound;
|
|||||||
|
|
||||||
mod retired;
|
mod retired;
|
||||||
|
|
||||||
|
const FALSE: &[u8] = &[0];
|
||||||
|
const TRUE: &[u8] = &[1];
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct Lmdb {
|
pub struct Lmdb {
|
||||||
env: Env,
|
env: Env,
|
||||||
@ -225,6 +228,30 @@ impl Lmdb {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get_if_events_are_aligned(&self) -> Result<bool, Error> {
|
||||||
|
let txn = self.read_txn()?;
|
||||||
|
match self.general.get(&txn, b"events_are_aligned")? {
|
||||||
|
None => Ok(false),
|
||||||
|
Some(bytes) => match bytes[0] {
|
||||||
|
0 => Ok(false),
|
||||||
|
_ => Ok(true),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_if_events_are_aligned(
|
||||||
|
&self,
|
||||||
|
txn: &mut RwTxn<'_>,
|
||||||
|
events_are_aligned: bool,
|
||||||
|
) -> Result<(), Error> {
|
||||||
|
let slice = match events_are_aligned {
|
||||||
|
false => FALSE,
|
||||||
|
true => TRUE,
|
||||||
|
};
|
||||||
|
self.general.put(txn, b"events_are_aligned", slice)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
// Index the event
|
// Index the event
|
||||||
pub fn index(&self, txn: &mut RwTxn<'_>, event: &Event, offset: usize) -> Result<(), Error> {
|
pub fn index(&self, txn: &mut RwTxn<'_>, event: &Event, offset: usize) -> Result<(), Error> {
|
||||||
// Index by id
|
// Index by id
|
||||||
|
|||||||
@ -24,9 +24,11 @@ impl Store {
|
|||||||
pub fn new(config: &Config) -> Result<Store, Error> {
|
pub fn new(config: &Config) -> Result<Store, Error> {
|
||||||
let lmdb = Lmdb::new(config)?;
|
let lmdb = Lmdb::new(config)?;
|
||||||
|
|
||||||
|
let events_are_aligned = lmdb.get_if_events_are_aligned()?;
|
||||||
|
|
||||||
let events = {
|
let events = {
|
||||||
let event_map_file = format!("{}/event.map", &config.data_directory);
|
let event_map_file = format!("{}/event.map", &config.data_directory);
|
||||||
EventStore::new(event_map_file, false)?
|
EventStore::new(event_map_file, events_are_aligned)?
|
||||||
};
|
};
|
||||||
|
|
||||||
let store = Store { lmdb, events };
|
let store = Store { lmdb, events };
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user