Struct vmap::io::Ring [−][src]
pub struct Ring { /* fields omitted */ }
Expand description
Fixed-size reliable read/write buffer with sequential address mapping.
This uses a circular address mapping scheme. That is, for any buffer of
size N
, the pointer address range of 0..N
maps to the same physical
memory as the range N..2*N
. This guarantees that the entire read or
write range may be addressed as a single sequence of bytes.
Unlike the InfiniteRing
, this type otherise
acts as a “normal” buffer. Writes fill up the buffer, and when full, no
furthur writes may be performed until a read occurs. The writable length
sequence is the capacity of the buffer, less any pending readable bytes.
Examples
use vmap::io::{Ring, SeqWrite};
use std::io::{BufRead, Read, Write};
let mut buf = Ring::new(4000).unwrap();
let mut i = 1;
// Fill up the buffer with lines.
while buf.write_len() > 20 {
write!(&mut buf, "this is test line {}\n", i)?;
i += 1;
}
// No more space is available.
assert!(write!(&mut buf, "this is test line {}\n", i).is_err());
let mut line = String::new();
// Read the first line written.
let len = buf.read_line(&mut line)?;
assert_eq!(line, "this is test line 1\n");
line.clear();
// Read the second line written.
let len = buf.read_line(&mut line)?;
assert_eq!(line, "this is test line 2\n");
// Now there is enough space to write more.
write!(&mut buf, "this is test line {}\n", i)?;
Implementations
Constructs a new buffer instance.
The hint is a minimum size for the buffer. This size will be rounded up to the nearest page size for the actual capacity. The allocation will occupy double the space in the virtual memory table, but the physical memory usage will remain at the desired capacity.
Trait Implementations
Returns the contents of the internal buffer, filling it with more data from the inner reader if it is empty. Read more
Tells this buffer that amt
bytes have been consumed from the buffer,
so they should no longer be returned in calls to read
. Read more
buf_read_has_data_left
)Check if the underlying Read
has any data left to be read. Read more
Read all bytes into buf
until the delimiter byte
or EOF is reached. Read more
Read all bytes until a newline (the 0xA
byte) is reached, and append
them to the provided buffer. Read more
Returns an iterator over the contents of this reader split on the byte
byte
. Read more
Pull some bytes from this source into the specified buffer, returning how many bytes were read. Read more
Like read
, except that it reads into a slice of buffers. Read more
can_vector
)Determines if this Read
er has an efficient read_vectored
implementation. Read more
Read all bytes until EOF in this source, placing them into buf
. Read more
Read all bytes until EOF in this source, appending them to buf
. Read more
Read the exact number of bytes required to fill buf
. Read more
read_buf
)Pull some bytes from this source into the specified buffer. Read more
read_buf
)Read the exact number of bytes required to fill buf
. Read more
Creates a “by reference” adaptor for this instance of Read
. Read more
Creates an adapter which will chain this stream with another. Read more
Get the mapped readable pointer without any offset.
Get the offset from the read pointer for the current read position.
Get an immutable slice covering the read region of the buffer.
Get the mapped writable pointer without any offset.
Get the offset from the write pointer for the current read position.
Get the total number of bytes that may be written after the current write offset.
Gets the number of bytes that the buffer has currently allocated space for.
Bump the write offset after writing into the writable slice. Read more
Get a mutable slice covering the write region of the buffer.
Write a buffer into this writer, returning how many bytes were written. Read more
Flush this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
can_vector
)Determines if this Write
r has an efficient write_vectored
implementation. Read more
Attempts to write an entire buffer into this writer. Read more
write_all_vectored
)Attempts to write multiple buffers into this writer. Read more
Writes a formatted string into this writer, returning any error encountered. Read more