Struct infinitree::object::BufferedSink
source · pub struct BufferedSink<Writer = AEADWriter, Buffer = BlockBuffer> { /* private fields */ }
Expand description
Buffered object writer that supports std::io::Write
.
Due to performance and storage waste considerations, this will generate a new chunk roughly about every 500kB of the input stream.
You need to take this into account when you want to create the
indexes around the stream, as every ChunkPointer
is 88 bytes
in size, which will occupy memory and storage.
Note that you can’t std::io::Seek
in this stream at this point
when reading it.
Examples
use std::io::Write;
use infinitree::{*, crypto::UsernamePassword, fields::Serialized, backends::test::InMemoryBackend, object::{Stream, BufferedSink}};
let mut tree = Infinitree::<infinitree::fields::VersionedMap<String, Stream>>::empty(
InMemoryBackend::shared(),
UsernamePassword::with_credentials("username".to_string(), "password".to_string()).unwrap()
).unwrap();
let mut sink = BufferedSink::new(tree.storage_writer().unwrap());
sink.write(b"it's going in the sink");
tree.index().insert("message_1".to_string(), sink.finish().unwrap());
tree.commit(None);
Implementations§
source§impl<W> BufferedSink<W>where
W: Writer,
impl<W> BufferedSink<W>where
W: Writer,
sourcepub fn new(writer: W) -> BufferedSink<W> ⓘ
pub fn new(writer: W) -> BufferedSink<W> ⓘ
Create a new BufferedSink
with the underlying
Writer
instance.
source§impl<W, Buffer> BufferedSink<W, Buffer>where
W: Writer,
Buffer: AsMut<[u8]>,
impl<W, Buffer> BufferedSink<W, Buffer>where
W: Writer,
Buffer: AsMut<[u8]>,
sourcepub fn with_buffer(writer: W, buffer: Buffer) -> Result<Self>
pub fn with_buffer(writer: W, buffer: Buffer) -> Result<Self>
Create a new BufferedSink
with the underlying
Writer
and buffer.
Trait Implementations§
source§impl<W, Buffer> Write for BufferedSink<W, Buffer>where
W: Writer,
Buffer: AsMut<[u8]>,
impl<W, Buffer> Write for BufferedSink<W, Buffer>where
W: Writer,
Buffer: AsMut<[u8]>,
source§fn write(&mut self, buf: &[u8]) -> Result<usize>
fn write(&mut self, buf: &[u8]) -> Result<usize>
Write a buffer into this writer, returning how many bytes were written. Read more
source§fn flush(&mut self) -> Result<()>
fn flush(&mut self) -> Result<()>
Flush this output stream, ensuring that all intermediately buffered
contents reach their destination. Read more
source§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
🔬This is a nightly-only experimental API. (
can_vector
)1.0.0 · source§fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
Attempts to write an entire buffer into this writer. Read more
source§fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
🔬This is a nightly-only experimental API. (
write_all_vectored
)Attempts to write multiple buffers into this writer. Read more
Auto Trait Implementations§
impl<Writer, Buffer> RefUnwindSafe for BufferedSink<Writer, Buffer>where
Buffer: RefUnwindSafe,
Writer: RefUnwindSafe,
impl<Writer, Buffer> Send for BufferedSink<Writer, Buffer>where
Buffer: Send,
Writer: Send,
impl<Writer, Buffer> Sync for BufferedSink<Writer, Buffer>where
Buffer: Sync,
Writer: Sync,
impl<Writer, Buffer> Unpin for BufferedSink<Writer, Buffer>where
Buffer: Unpin,
Writer: Unpin,
impl<Writer, Buffer> UnwindSafe for BufferedSink<Writer, Buffer>where
Buffer: UnwindSafe,
Writer: UnwindSafe,
Blanket Implementations§
source§impl<T> FieldWriter for Twhere
T: Write + Send,
impl<T> FieldWriter for Twhere
T: Write + Send,
source§fn write_next(&mut self, obj: impl Serialize + Send)
fn write_next(&mut self, obj: impl Serialize + Send)
Write the next
obj
into the index§impl<W> WriteBytesExt for Wwhere
W: Write + ?Sized,
impl<W> WriteBytesExt for Wwhere
W: Write + ?Sized,
§fn write_u8(&mut self, n: u8) -> Result<(), Error>
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>
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,
fn write_u16<T>(&mut self, n: u16) -> Result<(), Error>where
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,
fn write_i16<T>(&mut self, n: i16) -> Result<(), Error>where
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,
fn write_u24<T>(&mut self, n: u32) -> Result<(), Error>where
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,
fn write_i24<T>(&mut self, n: i32) -> Result<(), Error>where
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,
fn write_u32<T>(&mut self, n: u32) -> Result<(), Error>where
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,
fn write_i32<T>(&mut self, n: i32) -> Result<(), Error>where
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,
fn write_u48<T>(&mut self, n: u64) -> Result<(), Error>where
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,
fn write_i48<T>(&mut self, n: i64) -> Result<(), Error>where
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,
fn write_u64<T>(&mut self, n: u64) -> Result<(), Error>where
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,
fn write_i64<T>(&mut self, n: i64) -> Result<(), Error>where
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,
fn write_u128<T>(&mut self, n: u128) -> Result<(), Error>where
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,
fn write_i128<T>(&mut self, n: i128) -> Result<(), Error>where
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,
fn write_uint<T>(&mut self, n: u64, nbytes: usize) -> Result<(), Error>where
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,
fn write_int<T>(&mut self, n: i64, nbytes: usize) -> Result<(), Error>where
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,
fn write_uint128<T>(&mut self, n: u128, nbytes: usize) -> Result<(), Error>where
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,
fn write_int128<T>(&mut self, n: i128, nbytes: usize) -> Result<(), Error>where
T: ByteOrder,
Writes a signed n-bytes integer to the underlying writer. Read more