diff options
Diffstat (limited to 'src/directory/mmap_directory.rs')
-rw-r--r-- | src/directory/mmap_directory.rs | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/directory/mmap_directory.rs b/src/directory/mmap_directory.rs index 81ee59c..2f8ebc5 100644 --- a/src/directory/mmap_directory.rs +++ b/src/directory/mmap_directory.rs @@ -11,6 +11,7 @@ use crate::directory::error::{ DeleteError, IOError, OpenDirectoryError, OpenReadError, OpenWriteError, }; use crate::directory::read_only_source::BoxedData; +use crate::directory::AntiCallToken; use crate::directory::Directory; use crate::directory::DirectoryLock; use crate::directory::Lock; @@ -18,7 +19,7 @@ use crate::directory::ReadOnlySource; use crate::directory::WatchCallback; use crate::directory::WatchCallbackList; use crate::directory::WatchHandle; -use crate::directory::WritePtr; +use crate::directory::{TerminatingWrite, WritePtr}; use atomicwrites; use memmap::Mmap; use std::collections::HashMap; @@ -36,7 +37,7 @@ use std::sync::Mutex; use std::sync::RwLock; use std::sync::Weak; use std::thread; -use tempdir::TempDir; +use tempfile::TempDir; /// Create a default io error given a string. pub(crate) fn make_io_err(msg: String) -> io::Error { @@ -253,7 +254,7 @@ impl MmapDirectoryInner { } } if let Some(watch_wrapper) = self.watcher.write().unwrap().as_mut() { - return Ok(watch_wrapper.watch(watch_callback)); + Ok(watch_wrapper.watch(watch_callback)) } else { unreachable!("At this point, watch wrapper is supposed to be initialized"); } @@ -282,7 +283,7 @@ impl MmapDirectory { /// This is mostly useful to test the MmapDirectory itself. /// For your unit tests, prefer the RAMDirectory. pub fn create_from_tempdir() -> Result<MmapDirectory, OpenDirectoryError> { - let tempdir = TempDir::new("index").map_err(OpenDirectoryError::IoError)?; + let tempdir = TempDir::new().map_err(OpenDirectoryError::IoError)?; let tempdir_path = PathBuf::from(tempdir.path()); MmapDirectory::new(tempdir_path, Some(tempdir)) } @@ -400,6 +401,12 @@ impl Seek for SafeFileWriter { } } +impl TerminatingWrite for SafeFileWriter { + fn terminate_ref(&mut self, _: AntiCallToken) -> io::Result<()> { + self.flush() + } +} + impl Directory for MmapDirectory { fn open_read(&self, path: &Path) -> result::Result<ReadOnlySource, OpenReadError> { debug!("Open Read {:?}", path); @@ -630,7 +637,7 @@ mod tests { fn test_watch_wrapper() { let counter: Arc<AtomicUsize> = Default::default(); let counter_clone = counter.clone(); - let tmp_dir: TempDir = tempdir::TempDir::new("test_watch_wrapper").unwrap(); + let tmp_dir = tempfile::TempDir::new().unwrap(); let tmp_dirpath = tmp_dir.path().to_owned(); let mut watch_wrapper = WatcherWrapper::new(&tmp_dirpath).unwrap(); let tmp_file = tmp_dirpath.join("coucou"); |