[][src]Struct librapidarchive::concurrentbuf::ConcurrentWriteBuffer

pub struct ConcurrentWriteBuffer<T: Write + Send, P: Send + Clone> { /* fields omitted */ }

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]

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]

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]

impl<T, P> Drop for ConcurrentWriteBuffer<T, P> where
    T: Write + Send,
    P: Send + Clone
[src]

impl<T, P> Write for ConcurrentWriteBuffer<T, P> where
    T: 'static + Write + Send + RecoverableWrite<P>,
    P: 'static + Send + Clone + PartialEq
[src]

fn write_vectored(&mut self, bufs: &[IoVec]) -> Result<usize, Error>[src]

🔬 This is a nightly-only experimental API. (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]

impl<T> From for T[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.