|
14 | 14 |
|
15 | 15 | use crate::cache::{Cache, CacheMode, CacheRead, CacheWrite, Storage}; |
16 | 16 | use crate::compiler::PreprocessorCacheEntry; |
17 | | -use crate::lru_disk_cache::LruDiskCache; |
18 | 17 | use crate::lru_disk_cache::{Error as LruError, ReadSeek}; |
19 | 18 | use async_trait::async_trait; |
20 | | -use std::ffi::{OsStr, OsString}; |
| 19 | +use std::ffi::OsStr; |
21 | 20 | use std::io::{BufWriter, Write}; |
22 | 21 | use std::path::{Path, PathBuf}; |
23 | 22 | use std::sync::{Arc, Mutex}; |
24 | 23 | use std::time::{Duration, Instant}; |
25 | 24 |
|
26 | 25 | use crate::errors::*; |
27 | 26 |
|
| 27 | +use super::lazy_disk_cache::LazyDiskCache; |
28 | 28 | use super::{PreprocessorCacheModeConfig, normalize_key}; |
29 | 29 |
|
30 | | -enum LazyDiskCache { |
31 | | - Uninit { root: OsString, max_size: u64 }, |
32 | | - Init(LruDiskCache), |
33 | | -} |
34 | | - |
35 | | -impl LazyDiskCache { |
36 | | - fn get_or_init(&mut self) -> Result<&mut LruDiskCache> { |
37 | | - match self { |
38 | | - LazyDiskCache::Uninit { root, max_size } => { |
39 | | - *self = LazyDiskCache::Init(LruDiskCache::new(&root, *max_size)?); |
40 | | - self.get_or_init() |
41 | | - } |
42 | | - LazyDiskCache::Init(d) => Ok(d), |
43 | | - } |
44 | | - } |
45 | | - |
46 | | - fn get(&mut self) -> Option<&mut LruDiskCache> { |
47 | | - match self { |
48 | | - LazyDiskCache::Uninit { .. } => None, |
49 | | - LazyDiskCache::Init(d) => Some(d), |
50 | | - } |
51 | | - } |
52 | | - |
53 | | - fn capacity(&self) -> u64 { |
54 | | - match self { |
55 | | - LazyDiskCache::Uninit { max_size, .. } => *max_size, |
56 | | - LazyDiskCache::Init(d) => d.capacity(), |
57 | | - } |
58 | | - } |
59 | | - |
60 | | - fn path(&self) -> &Path { |
61 | | - match self { |
62 | | - LazyDiskCache::Uninit { root, .. } => root.as_ref(), |
63 | | - LazyDiskCache::Init(d) => d.path(), |
64 | | - } |
65 | | - } |
66 | | -} |
67 | | - |
68 | 30 | /// A cache that stores entries at local disk paths. |
69 | 31 | pub struct DiskCache { |
70 | 32 | /// `LruDiskCache` does all the real work here. |
|
0 commit comments