Expand description
Working with Log
let config = pagecache::ConfigBuilder::new()
.temporary(true)
.segment_mode(pagecache::SegmentMode::Linear)
.build();
let log = pagecache::Log::start_raw_log(config).unwrap();
let (first_lsn, _first_offset) = log.write(b"1".to_vec()).unwrap();
log.write(b"22".to_vec()).unwrap();
log.write(b"333".to_vec()).unwrap();
// stick an abort in the middle, which should not be returned
let res = log.reserve(b"never_gonna_hit_disk".to_vec()).unwrap();
res.abort().unwrap();
log.write(b"4444".to_vec());
let (last_lsn, _last_offset) = log.write(b"55555".to_vec()).unwrap();
log.make_stable(last_lsn).unwrap();
let mut iter = log.iter_from(first_lsn);
assert_eq!(iter.next().unwrap().2, b"1".to_vec());
assert_eq!(iter.next().unwrap().2, b"22".to_vec());
assert_eq!(iter.next().unwrap().2, b"333".to_vec());
assert_eq!(iter.next().unwrap().2, b"4444".to_vec());
assert_eq!(iter.next().unwrap().2, b"55555".to_vec());
assert_eq!(iter.next(), None);
Structs
A sequential store which allows users to create
reservations placed at known log offsets, used
for writing persistent data structures that need
to know where to find persisted bits in the future.