[−][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. |