summaryrefslogtreecommitdiffstats
path: root/src/directory/mmap_directory.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/directory/mmap_directory.rs')
-rw-r--r--src/directory/mmap_directory.rs17
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");