MCPcopy Create free account
hub / github.com/cosdata/cosdata / flush_versioned

Method flush_versioned

src/models/buffered_io.rs:779–797  ·  view source on GitHub ↗
(&self, mapping_fn: impl Fn(u64) -> PathBuf)

Source from the content-addressed store, hash-verified

777 }
778
779 pub fn flush_versioned(&self, mapping_fn: impl Fn(u64) -> PathBuf) -> Result<(), BufIoError> {
780 for region in self.regions.iter() {
781 if region.should_flush() {
782 let path = mapping_fn(region.start / self.buffer_size as u64);
783 let mut file = OpenOptions::new()
784 .write(true)
785 .create(true)
786 .truncate(false)
787 .open(path)?;
788 let buffer = region.buffer.read().map_err(|_| BufIoError::Locking)?;
789 let end = region.end.load(Ordering::SeqCst);
790 file.write_all(&buffer[..end]).map_err(BufIoError::Io)?;
791 region.dirty.store(false, Ordering::SeqCst);
792 file.flush()?;
793 file.sync_all()?;
794 }
795 }
796 Ok(())
797 }
798
799 pub fn file_size(&self) -> u64 {
800 *self.file_size.read().unwrap()

Callers 1

flush_allMethod · 0.80

Calls 5

should_flushMethod · 0.80
loadMethod · 0.80
iterMethod · 0.45
readMethod · 0.45
flushMethod · 0.45

Tested by

no test coverage detected