1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
//! This module currently includes single `Buf` struct for holding buffers. //! Comparing to `Vec` class buffer has different allocation policy and has //! a marker of consumed data (i.e. already processed by protocol parser or //! already written to socket) //! //! The `Buf` is deemed good both for input and output network buffer. //! //! It also contains helper methods `read_from` and `write_to` which are used //! to read and append bytes from stream that implements Read and write bytes //! from buffer to a stream which implements Write respectively. //! //! Note there are basically three ways to fill the buffer: //! //! * `Buf::read_from` -- preallocates some chunk and gives it to object //! implemeting Read //! * `Write::write` -- writes chunk to buffer assuming more data will follow //! shortly, i.e. it does large preallocations //! * `Buf::extend` -- writes chunk to buffer assuming it will not grow in the //! near perspective, so it allocates minimum chunk to hold the data //! //! In other words you should use: //! //! * `Buf::read_from` -- to read from the network //! * `Write::write` -- when you are constructing object directly to the buffer //! incrementally //! * `Buf::extend` -- when you put whole object in place and give it to the //! network code for sending //! //! More documentation is found in `Buf` object itself #[cfg(test)] extern crate mockstream; mod buf; mod range; pub use buf::Buf; pub use buf::MAX_BUF_SIZE; pub use range::RangeArgument;