[][src]Module pagecache::logger

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

Log

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.