mirror of
https://github.com/quickwit-oss/tantivy.git
synced 2026-05-30 15:10:40 +00:00
NOBUG Using BufWriter<Box<Write>>
This commit is contained in:
@@ -99,34 +99,29 @@ impl MmapDirectory {
|
||||
|
||||
/// This Write wraps a File, but has the specificity of
|
||||
/// call `sync_all` on flush.
|
||||
struct SafeFileWriter {
|
||||
writer: BufWriter<File>,
|
||||
}
|
||||
struct SafeFileWriter(File);
|
||||
|
||||
impl SafeFileWriter {
|
||||
fn new(file: File) -> SafeFileWriter {
|
||||
SafeFileWriter {
|
||||
writer: BufWriter::new(file),
|
||||
}
|
||||
SafeFileWriter(file)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
impl Write for SafeFileWriter {
|
||||
|
||||
fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
|
||||
self.writer.write(buf)
|
||||
self.0.write(buf)
|
||||
}
|
||||
|
||||
fn flush(&mut self) -> io::Result<()> {
|
||||
try!(self.writer.flush());
|
||||
self.writer.get_ref().sync_all()
|
||||
try!(self.0.flush());
|
||||
self.0.sync_all()
|
||||
}
|
||||
}
|
||||
|
||||
impl Seek for SafeFileWriter {
|
||||
fn seek(&mut self, pos: SeekFrom) -> io::Result<u64> {
|
||||
self.writer.seek(pos)
|
||||
self.0.seek(pos)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,7 +199,7 @@ impl Directory for MmapDirectory {
|
||||
try!(self.sync_directory());
|
||||
|
||||
let writer = SafeFileWriter::new(file);
|
||||
Ok(Box::new(writer))
|
||||
Ok(BufWriter::new(Box::new(writer)))
|
||||
}
|
||||
|
||||
fn delete(&self, path: &Path) -> result::Result<(), FileError> {
|
||||
|
||||
@@ -7,8 +7,9 @@ mod shared_vec_slice;
|
||||
/// Errors specific to the directory module.
|
||||
pub mod error;
|
||||
|
||||
use std::io::{Seek, Write};
|
||||
use std::io::{Write, Seek};
|
||||
|
||||
use std::io::BufWriter;
|
||||
pub use self::read_only_source::ReadOnlySource;
|
||||
pub use self::directory::Directory;
|
||||
pub use self::ram_directory::RAMDirectory;
|
||||
@@ -22,14 +23,14 @@ impl<T: Seek + Write> SeekableWrite for T {}
|
||||
///
|
||||
/// `WritePtr` are required to implement both Write
|
||||
/// and Seek.
|
||||
pub type WritePtr = Box<SeekableWrite>;
|
||||
pub type WritePtr = BufWriter<Box<SeekableWrite>>;
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
|
||||
use super::*;
|
||||
use std::path::Path;
|
||||
use std::io::SeekFrom;
|
||||
use std::path::Path;
|
||||
use std::io::{Write, Seek, SeekFrom};
|
||||
|
||||
lazy_static! {
|
||||
static ref TEST_PATH: &'static Path = Path::new("some_path_for_test");
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
use std::collections::HashMap;
|
||||
use std::fmt;
|
||||
use std::io;
|
||||
use std::io::{Cursor, Write, Seek, SeekFrom};
|
||||
use std::io::{self, BufWriter, Cursor, Write, Seek, SeekFrom};
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::result;
|
||||
use std::sync::{Arc, RwLock};
|
||||
@@ -173,7 +172,7 @@ impl Directory for RAMDirectory {
|
||||
Err(OpenWriteError::FileAlreadyExists(path_buf))
|
||||
}
|
||||
else {
|
||||
Ok(Box::new(vec_writer))
|
||||
Ok(BufWriter::new(Box::new(vec_writer)))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
use common::BinarySerializable;
|
||||
use directory::WritePtr;
|
||||
use schema::Field;
|
||||
use std::io;
|
||||
use std::io::{SeekFrom, Write};
|
||||
use std::io::{self, SeekFrom, Seek, Write};
|
||||
use super::compute_num_bits;
|
||||
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ use DocId;
|
||||
use core::Segment;
|
||||
use std::io;
|
||||
use core::SegmentComponent;
|
||||
use std::io::Write;
|
||||
use common::VInt;
|
||||
use common::BinarySerializable;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user