1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use std::fs::File;
use crate::memory_fs::allocator::AllocatedChunk;
use crate::memory_fs::file::internal::FileChunk;
use parking_lot::lock_api::ArcRwLockWriteGuard;
use parking_lot::{Mutex, RawRwLock};
use std::path::PathBuf;
use std::sync::Arc;
pub struct FlushableItem {
pub underlying_file: Arc<(PathBuf, Mutex<File>)>,
pub mode: FileFlushMode,
}
pub enum FileFlushMode {
Append {
chunk: ArcRwLockWriteGuard<RawRwLock, FileChunk>,
},
WriteAt {
buffer: AllocatedChunk,
offset: u64,
},
}