pub struct FileLock { /* private fields */ }
Expand description
Locks a file asynchronously. Auto locks a file if any read or write methods are called. If Self::lock_exclusive or Self::lock_shared has been called then the file will stay locked. Can auto seek to specified location before doing any read/write operation.
Note 1: Do not attempt to have multiple file handles for the same file. Because locking is done per process basis. Note 2: Remember to open a file with specified read and/or write mode as write calls will just be ignored if the file is opened in read mode.
Implementations§
Source§impl FileLock
impl FileLock
Sourcepub async fn create(path: impl AsRef<Path>) -> Result<FileLock>
pub async fn create(path: impl AsRef<Path>) -> Result<FileLock>
Opens a file in read and write mode that is unlocked.
Sourcepub async fn open(path: impl AsRef<Path>) -> Result<FileLock>
pub async fn open(path: impl AsRef<Path>) -> Result<FileLock>
Attempts to open a file in read and write mode that is unlocked.
Sourcepub async fn new_tokio(tokio_file: File) -> FileLock
pub async fn new_tokio(tokio_file: File) -> FileLock
Creates a new ‘FileLock’ from tokio::fs::File
.
Sourcepub fn new_std(std_file: File) -> FileLock
pub fn new_std(std_file: File) -> FileLock
Creates a new ‘FileLock’ from std::fs::File
.
Sourcepub fn lock_exclusive(&mut self) -> LockFuture<'_> ⓘ
pub fn lock_exclusive(&mut self) -> LockFuture<'_> ⓘ
Locks the file for reading and writing until Self::unlock
is called.
Sourcepub fn try_lock_exclusive(&mut self) -> Result<()>
pub fn try_lock_exclusive(&mut self) -> Result<()>
Locks the file for reading and writing until Self::unlock
is called. Returns an error if
the file is currently locked.
Locks the file for reading until Self::unlock
is called.
Locks the file for reading until Self::unlock
is called. Returns an error if the file
is currently locked.
Sourcepub fn unlock(&mut self) -> UnlockFuture<'_> ⓘ
pub fn unlock(&mut self) -> UnlockFuture<'_> ⓘ
Unlocks the file.
Sourcepub fn set_seeking_mode(&mut self, mode: SeekFrom)
pub fn set_seeking_mode(&mut self, mode: SeekFrom)
Sets auto seeking mode. File will always seek to specified location before doing any read/write operation.
pub fn seeking_mode(&self) -> SeekFrom
Sourcepub async fn sync_all(&mut self) -> Result<()>
pub async fn sync_all(&mut self) -> Result<()>
Attempts to sync all OS-internal metadata to disk.
This function will attempt to ensure that all in-core data reaches the filesystem before returning.
§Examples
use tokio::fs::File;
use tokio::prelude::*;
let mut file = File::create("foo.txt").await?;
file.write_all(b"hello, world!").await?;
file.sync_all().await?;
The write_all
method is defined on the AsyncWriteExt
trait.
Sourcepub async fn sync_data(&mut self) -> Result<()>
pub async fn sync_data(&mut self) -> Result<()>
This function is similar to sync_all
, except that it may not
synchronize file metadata to the filesystem.
This is intended for use cases that must synchronize content, but don’t need the metadata on disk. The goal of this method is to reduce disk operations.
Note that some platforms may simply implement this in terms of sync_all
.
§Examples
use tokio::fs::File;
use tokio::prelude::*;
let mut file = File::create("foo.txt").await?;
file.write_all(b"hello, world!").await?;
file.sync_data().await?;
The write_all
method is defined on the AsyncWriteExt
trait.
Sourcepub fn get_ref(&self) -> (Option<&File>, Option<&File>)
pub fn get_ref(&self) -> (Option<&File>, Option<&File>)
Gets a reference to the file.
If the file is locked it will be in the second element of a tuple as tokio::fs::File
otherwise it will be in the first element as std::fs::File
.
It is inadvisable to directly read/write from/to the file.
Sourcepub fn get_mut(&mut self) -> (Option<&mut File>, Option<&mut File>)
pub fn get_mut(&mut self) -> (Option<&mut File>, Option<&mut File>)
Gets a mutable reference to the file.
If the file is locked it will be in the second element of a tuple as tokio::fs::File
otherwise it will be in the first element as std::fs::File
.
It is inadvisable to directly read/write from/to the file.
Trait Implementations§
Source§impl AsyncRead for FileLock
impl AsyncRead for FileLock
Source§unsafe fn prepare_uninitialized_buffer(&self, _: &mut [MaybeUninit<u8>]) -> bool
unsafe fn prepare_uninitialized_buffer(&self, _: &mut [MaybeUninit<u8>]) -> bool
read
. Returns
true
if the supplied buffer was zeroed out. Read moreSource§impl AsyncSeek for FileLock
impl AsyncSeek for FileLock
Source§impl AsyncWrite for FileLock
impl AsyncWrite for FileLock
Source§fn poll_write(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &[u8],
) -> Poll<Result<usize>>
fn poll_write( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8], ) -> Poll<Result<usize>>
buf
into the object. Read moreSource§fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>>
fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>>
Auto Trait Implementations§
impl Freeze for FileLock
impl !RefUnwindSafe for FileLock
impl Send for FileLock
impl !Sync for FileLock
impl Unpin for FileLock
impl !UnwindSafe for FileLock
Blanket Implementations§
Source§impl<R> AsyncReadExt for R
impl<R> AsyncReadExt for R
Source§fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self>where
Self: Unpin,
fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self>where
Self: Unpin,
Source§fn read_buf<'a, B>(&'a mut self, buf: &'a mut B) -> ReadBuf<'a, Self, B>
fn read_buf<'a, B>(&'a mut self, buf: &'a mut B) -> ReadBuf<'a, Self, B>
Source§fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self>where
Self: Unpin,
fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self>where
Self: Unpin,
buf
. Read moreSource§fn read_u8<'a>(&'a mut self) -> ReadU8<&'a mut Self>where
Self: Unpin,
fn read_u8<'a>(&'a mut self) -> ReadU8<&'a mut Self>where
Self: Unpin,
Source§fn read_i8<'a>(&'a mut self) -> ReadI8<&'a mut Self>where
Self: Unpin,
fn read_i8<'a>(&'a mut self) -> ReadI8<&'a mut Self>where
Self: Unpin,
Source§fn read_u16<'a>(&'a mut self) -> ReadU16<&'a mut Self>where
Self: Unpin,
fn read_u16<'a>(&'a mut self) -> ReadU16<&'a mut Self>where
Self: Unpin,
Source§fn read_i16<'a>(&'a mut self) -> ReadI16<&'a mut Self>where
Self: Unpin,
fn read_i16<'a>(&'a mut self) -> ReadI16<&'a mut Self>where
Self: Unpin,
Source§fn read_u32<'a>(&'a mut self) -> ReadU32<&'a mut Self>where
Self: Unpin,
fn read_u32<'a>(&'a mut self) -> ReadU32<&'a mut Self>where
Self: Unpin,
Source§fn read_i32<'a>(&'a mut self) -> ReadI32<&'a mut Self>where
Self: Unpin,
fn read_i32<'a>(&'a mut self) -> ReadI32<&'a mut Self>where
Self: Unpin,
Source§fn read_u64<'a>(&'a mut self) -> ReadU64<&'a mut Self>where
Self: Unpin,
fn read_u64<'a>(&'a mut self) -> ReadU64<&'a mut Self>where
Self: Unpin,
Source§fn read_i64<'a>(&'a mut self) -> ReadI64<&'a mut Self>where
Self: Unpin,
fn read_i64<'a>(&'a mut self) -> ReadI64<&'a mut Self>where
Self: Unpin,
Source§fn read_u128<'a>(&'a mut self) -> ReadU128<&'a mut Self>where
Self: Unpin,
fn read_u128<'a>(&'a mut self) -> ReadU128<&'a mut Self>where
Self: Unpin,
Source§fn read_i128<'a>(&'a mut self) -> ReadI128<&'a mut Self>where
Self: Unpin,
fn read_i128<'a>(&'a mut self) -> ReadI128<&'a mut Self>where
Self: Unpin,
Source§fn read_u16_le<'a>(&'a mut self) -> ReadU16Le<&'a mut Self>where
Self: Unpin,
fn read_u16_le<'a>(&'a mut self) -> ReadU16Le<&'a mut Self>where
Self: Unpin,
Source§fn read_i16_le<'a>(&'a mut self) -> ReadI16Le<&'a mut Self>where
Self: Unpin,
fn read_i16_le<'a>(&'a mut self) -> ReadI16Le<&'a mut Self>where
Self: Unpin,
Source§fn read_u32_le<'a>(&'a mut self) -> ReadU32Le<&'a mut Self>where
Self: Unpin,
fn read_u32_le<'a>(&'a mut self) -> ReadU32Le<&'a mut Self>where
Self: Unpin,
Source§fn read_i32_le<'a>(&'a mut self) -> ReadI32Le<&'a mut Self>where
Self: Unpin,
fn read_i32_le<'a>(&'a mut self) -> ReadI32Le<&'a mut Self>where
Self: Unpin,
Source§fn read_u64_le<'a>(&'a mut self) -> ReadU64Le<&'a mut Self>where
Self: Unpin,
fn read_u64_le<'a>(&'a mut self) -> ReadU64Le<&'a mut Self>where
Self: Unpin,
Source§fn read_i64_le<'a>(&'a mut self) -> ReadI64Le<&'a mut Self>where
Self: Unpin,
fn read_i64_le<'a>(&'a mut self) -> ReadI64Le<&'a mut Self>where
Self: Unpin,
Source§fn read_u128_le<'a>(&'a mut self) -> ReadU128Le<&'a mut Self>where
Self: Unpin,
fn read_u128_le<'a>(&'a mut self) -> ReadU128Le<&'a mut Self>where
Self: Unpin,
Source§fn read_i128_le<'a>(&'a mut self) -> ReadI128Le<&'a mut Self>where
Self: Unpin,
fn read_i128_le<'a>(&'a mut self) -> ReadI128Le<&'a mut Self>where
Self: Unpin,
Source§fn read_to_end<'a>(&'a mut self, buf: &'a mut Vec<u8>) -> ReadToEnd<'a, Self>where
Self: Unpin,
fn read_to_end<'a>(&'a mut self, buf: &'a mut Vec<u8>) -> ReadToEnd<'a, Self>where
Self: Unpin,
buf
. Read more