Replace `removed` ids with the new `added` segments. Used by the compaction merger after it has produced a replacement segment.
(&mut self, removed: &[String], added: Vec<SegmentRef>)
| 130 | /// Replace `removed` ids with the new `added` segments. Used by the |
| 131 | /// compaction merger after it has produced a replacement segment. |
| 132 | pub fn replace(&mut self, removed: &[String], added: Vec<SegmentRef>) { |
| 133 | self.segments.retain(|s| !removed.contains(&s.id)); |
| 134 | for seg in added { |
| 135 | self.durable_lsn = self.durable_lsn.max(seg.flush_lsn); |
| 136 | self.segments.push(seg); |
| 137 | } |
| 138 | } |
| 139 | |
| 140 | pub fn segments_at_level(&self, level: u8) -> impl Iterator<Item = &SegmentRef> { |
| 141 | self.segments.iter().filter(move |s| s.level == level) |