Path: blob/main/crates/polars-io/src/utils/sync_on_close.rs
6939 views
use std::{fs, io};12#[derive(Clone, Copy, PartialEq, Eq, Debug, Default, Hash)]3#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]4#[cfg_attr(feature = "dsl-schema", derive(schemars::JsonSchema))]5pub enum SyncOnCloseType {6/// Don't call sync on close.7#[default]8None,910/// Sync only the file contents.11Data,12/// Synce the file contents and the metadata.13All,14}1516pub fn sync_on_close(sync_on_close: SyncOnCloseType, file: &mut fs::File) -> io::Result<()> {17match sync_on_close {18SyncOnCloseType::None => Ok(()),19SyncOnCloseType::Data => file.sync_data(),20SyncOnCloseType::All => file.sync_all(),21}22}2324#[cfg(feature = "tokio")]25pub async fn tokio_sync_on_close(26sync_on_close: SyncOnCloseType,27file: &mut tokio::fs::File,28) -> io::Result<()> {29match sync_on_close {30SyncOnCloseType::None => Ok(()),31SyncOnCloseType::Data => file.sync_data().await,32SyncOnCloseType::All => file.sync_all().await,33}34}353637