Crate netbuf [−] [src]
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 ReadWrite::write
-- writes chunk to buffer assuming more data will follow shortly, i.e. it does large preallocationsBuf::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 networkWrite::write
-- when you are constructing object directly to the buffer incrementallyBuf::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
Structs
Buf |
A buffer object to be used for reading from network |
Enums
RangeArgument |
Temporary type until the one in stdlib it made stable |
Constants
MAX_BUF_SIZE |
Maximum size of buffer allowed. Note: we assert on this size. Most network servers should set their own limits to something much smaller. |