[−][src]Struct librapidarchive::concurrentbuf::ConcurrentWriteBuffer
Write buffer that does all of it's buffered I/O concurrently.
By doing buffered I/O on a separate thread and storing the results in memory things like copy operations can be dramatically accelerated.
Record-oriented media considerations
This facility attempts to preserve the sizes of requests where possible. This is for the sake of record-oriented media, such as magnetic tape or UDP packets, where data is stored in records or packets whose sizes are determined by the size of the write request.
Specifically, 'ConcurrentWriteBuffer' does not merge write requests into a
single, larger buffer. The inner writer will be presented with the original
data buffer, and it will only be separated into smaller buffers if the inner
writer only accepts the buffer partially. If you need such a facility for
merging writes into larger buffers, consider using BufWriter
or
BlockingWriter
depending on your needs. Such writers may be
used in concert with this one.
Methods
impl<T, P> ConcurrentWriteBuffer<T, P> where
T: 'static + Write + Send + RecoverableWrite<P>,
P: 'static + Send + Clone + PartialEq,
[src]
T: 'static + Write + Send + RecoverableWrite<P>,
P: 'static + Send + Clone + PartialEq,
ⓘImportant traits for ConcurrentWriteBuffer<T, P>pub fn new(inner: T, limit: u64) -> ConcurrentWriteBuffer<T, P>
[src]
Trait Implementations
impl<T, P> ArchivalSink<P> for ConcurrentWriteBuffer<T, P> where
T: 'static + Write + Send + RecoverableWrite<P>,
P: 'static + Send + Clone + PartialEq,
[src]
T: 'static + Write + Send + RecoverableWrite<P>,
P: 'static + Send + Clone + PartialEq,
fn downcast_seek(&mut self) -> Option<&mut dyn Seek>
[src]
fn downcast_tapedevice(&mut self) -> Option<&mut dyn TapeDevice>
[src]
impl<T, P> RecoverableWrite<P> for ConcurrentWriteBuffer<T, P> where
T: 'static + Write + Send + RecoverableWrite<P>,
P: 'static + Send + Clone + PartialEq,
[src]
T: 'static + Write + Send + RecoverableWrite<P>,
P: 'static + Send + Clone + PartialEq,
fn begin_data_zone(&mut self, ident: P)
[src]
fn resume_data_zone(&mut self, ident: P, committed: u64)
[src]
fn end_data_zone(&mut self)
[src]
fn uncommitted_writes(&self) -> Vec<DataZone<P>>
[src]
impl<T, P> Drop for ConcurrentWriteBuffer<T, P> where
T: Write + Send,
P: Send + Clone,
[src]
T: Write + Send,
P: Send + Clone,
impl<T, P> Write for ConcurrentWriteBuffer<T, P> where
T: 'static + Write + Send + RecoverableWrite<P>,
P: 'static + Send + Clone + PartialEq,
[src]
T: 'static + Write + Send + RecoverableWrite<P>,
P: 'static + Send + Clone + PartialEq,
fn write(&mut self, buf: &[u8]) -> Result<usize>
[src]
fn flush(&mut self) -> Result<()>
[src]
fn write_vectored(&mut self, bufs: &[IoVec]) -> Result<usize, Error>
[src]
iovec
)Like write
, except that it writes from a slice of buffers. Read more
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
1.0.0[src]
Attempts to write an entire buffer into this writer. Read more
fn write_fmt(&mut self, fmt: Arguments) -> Result<(), Error>
1.0.0[src]
Writes a formatted string into this writer, returning any error encountered. Read more
fn by_ref(&mut self) -> &mut Self
1.0.0[src]
Creates a "by reference" adaptor for this instance of Write
. Read more
Auto Trait Implementations
impl<T, P> Send for ConcurrentWriteBuffer<T, P>
impl<T, P> !Sync for ConcurrentWriteBuffer<T, P>
Blanket Implementations
impl<T, U> Into for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From for T
[src]
impl<T, U> TryFrom for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T> Borrow for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<W> WriteBytesExt for W where
W: Write + ?Sized,
W: Write + ?Sized,
fn write_u8(&mut self, n: u8) -> Result<(), Error>
Writes an unsigned 8 bit integer to the underlying writer. Read more
fn write_i8(&mut self, n: i8) -> Result<(), Error>
Writes a signed 8 bit integer to the underlying writer. Read more
fn write_u16<T>(&mut self, n: u16) -> Result<(), Error> where
T: ByteOrder,
T: ByteOrder,
Writes an unsigned 16 bit integer to the underlying writer. Read more
fn write_i16<T>(&mut self, n: i16) -> Result<(), Error> where
T: ByteOrder,
T: ByteOrder,
Writes a signed 16 bit integer to the underlying writer. Read more
fn write_u24<T>(&mut self, n: u32) -> Result<(), Error> where
T: ByteOrder,
T: ByteOrder,
Writes an unsigned 24 bit integer to the underlying writer. Read more
fn write_i24<T>(&mut self, n: i32) -> Result<(), Error> where
T: ByteOrder,
T: ByteOrder,
Writes a signed 24 bit integer to the underlying writer. Read more
fn write_u32<T>(&mut self, n: u32) -> Result<(), Error> where
T: ByteOrder,
T: ByteOrder,
Writes an unsigned 32 bit integer to the underlying writer. Read more
fn write_i32<T>(&mut self, n: i32) -> Result<(), Error> where
T: ByteOrder,
T: ByteOrder,
Writes a signed 32 bit integer to the underlying writer. Read more
fn write_u48<T>(&mut self, n: u64) -> Result<(), Error> where
T: ByteOrder,
T: ByteOrder,
Writes an unsigned 48 bit integer to the underlying writer. Read more
fn write_i48<T>(&mut self, n: i64) -> Result<(), Error> where
T: ByteOrder,
T: ByteOrder,
Writes a signed 48 bit integer to the underlying writer. Read more
fn write_u64<T>(&mut self, n: u64) -> Result<(), Error> where
T: ByteOrder,
T: ByteOrder,
Writes an unsigned 64 bit integer to the underlying writer. Read more
fn write_i64<T>(&mut self, n: i64) -> Result<(), Error> where
T: ByteOrder,
T: ByteOrder,
Writes a signed 64 bit integer to the underlying writer. Read more
fn write_u128<T>(&mut self, n: u128) -> Result<(), Error> where
T: ByteOrder,
T: ByteOrder,
Writes an unsigned 128 bit integer to the underlying writer.
fn write_i128<T>(&mut self, n: i128) -> Result<(), Error> where
T: ByteOrder,
T: ByteOrder,
Writes a signed 128 bit integer to the underlying writer.
fn write_uint<T>(&mut self, n: u64, nbytes: usize) -> Result<(), Error> where
T: ByteOrder,
T: ByteOrder,
Writes an unsigned n-bytes integer to the underlying writer. Read more
fn write_int<T>(&mut self, n: i64, nbytes: usize) -> Result<(), Error> where
T: ByteOrder,
T: ByteOrder,
Writes a signed n-bytes integer to the underlying writer. Read more
fn write_uint128<T>(&mut self, n: u128, nbytes: usize) -> Result<(), Error> where
T: ByteOrder,
T: ByteOrder,
Writes an unsigned n-bytes integer to the underlying writer. Read more
fn write_int128<T>(&mut self, n: i128, nbytes: usize) -> Result<(), Error> where
T: ByteOrder,
T: ByteOrder,
Writes a signed n-bytes integer to the underlying writer. Read more
fn write_f32<T>(&mut self, n: f32) -> Result<(), Error> where
T: ByteOrder,
T: ByteOrder,
Writes a IEEE754 single-precision (4 bytes) floating point number to the underlying writer. Read more
fn write_f64<T>(&mut self, n: f64) -> Result<(), Error> where
T: ByteOrder,
T: ByteOrder,
Writes a IEEE754 double-precision (8 bytes) floating point number to the underlying writer. Read more